pytesseract提取识别图片中的文字

2023-05-16

目录

1、获取tesseract版本号

2、获取语言包列表

3、识别图片中的文字

4、获取图片中文字的详细信息

5、识别图片中的文字和位置

6、识别osd信息

7、识别并生成xml文件

避坑指南:


 pytesseract是对Tesseract-OCR命令行的封装,实际上底层调用的还是tesseract可执行文件,所以在使用pytesseract前需要完成Tesseract-OCR软件安装和语言包安装,详细方法可以参考 Tesseract-OCR5.0软件安装和语言包安装(Windows系统)。

pytesseract可以通过pip安装,当前(2021.11)最新版本为0.3.8:

pip install pytesseract

1、获取tesseract版本号

get_tesseract_version()获取tesseract的版本号,注意并不是pytesseract的版本号:

#juzicode.com / VX公众号:桔子code  
import pytesseract as ts
version = ts.get_tesseract_version()
print('version:',version)

运行结果:

version: 5.0.0-rc1.20211030

结果和在命令行执行”tesseract –version”看到的版本号是一样的:

E:\juzicode\tess>tesseract --version
tesseract v5.0.0-rc1.20211030

2、获取语言包列表

通过get_languages()获取安装的语言包列表:

#juzicode.com / VX公众号:桔子code  
import pytesseract as ts
langs = ts.get_languages()
print('langs:',langs)

运行结果:

langs: ['chi_sim', 'eng', 'osd']

和在命令行用“tesseract –list-langs”检查语言包得到的结果是一样的:

E:\juzicode\tess>tesseract --list-langs
List of available languages (3):
chi_sim
eng
osd

3、识别图片中的文字

image_to_string()用来识别图片中的文字,最简单的用法传入2个入参,一个是图片的文件名称,一个是识别所用的语言包类型,比如要识别下图中的文字,这是一段从pdf文件中截屏的片段,文件名为bookseg.png,语言包选择chi_sim:

img_fn = 'bookseg.png'
lang = 'chi_sim'
text = ts.image_to_string(img_fn,lang)
print(text)

运行结果:

引 言

数 字 图 像 处 理 方 法 的 重 要 性 源 于 两 个 主 要 应 用 领 域 : 改 善 图 示 信 息 以 便 人 们 解 释 ; 为 存 储 、 传
输 和 表 示 而 对 图 像 数 据 进 行 处 理 , 以 便 于 机 器 自 动 理 解 。 本 章 有 几 个 主 要 目 的 : (1) 定 义 我 们 称 之 为
图 像 处 理 领 域 的 范 围 ; (2) 从 历 史 观 点 回 顾 图 像 处 理 的 起 源 ; (3) 通 过 考 察 一 些 主 要 的 应 用 领 域 , 给 出

图 像 处 理 技 术 状 况 的 概 念 ; (4) 筒 要 讨 论 数 字 图 像 处 理 中 所 用 的 主 要 方 法 ; (5) 概 述 通 用 目 的 的 典 型 图
像 处 理 系 统 的 组 成 ; (6) 列 出 公 开 发 表 的 数 字 图 像 处 理 领 域 的 一 些 图 书 和 文 献 。

从这个例子可以看到识别清晰度较高的图片效果还是非常好的。

除了前面介绍的传入图片文件名称的方法,还可以传入图像的numpy数组,这样就可以和pillow、opencv等模块配合使用,在某些场合下就可以先用pillow或opencv等做一些预处理再传入到image_to_string()中识别。

img_fn = 'bookseg.png'
lang = 'chi_sim'
img = cv2.imread(img_fn,0)
cv2.imwrite('gray-bin.jpg',img)
text = ts.image_to_string(img,lang) #第1个参数传入numpy类型
print(text)

image_to_string()还可以用config参数配置tesseract的命令选项,所有的可选参数组成一个字符串传给config入参,使用方法为:

text = ts.image_to_string(img,lang,config='--psm 6 --oem 1 --loglevel ALL')

详细的参数选项有如下几种,可以通过tesseract的help命令查询到:

OCR options:
  --tessdata-dir PATH   Specify the location of tessdata path.
  --user-words PATH     Specify the location of user words file.
  --user-patterns PATH  Specify the location of user patterns file.
  --dpi VALUE           Specify DPI for input image.
  --loglevel LEVEL      Specify logging level. LEVEL can be
                        ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL or OFF.
  -l LANG[+LANG]        Specify language(s) used for OCR.
  -c VAR=VALUE          Set value for config variables.
                        Multiple -c arguments are allowed.
  --psm NUM             Specify page segmentation mode.
  --oem NUM             Specify OCR Engine mode.
NOTE: These options must occur before any configfile.

4、获取图片中文字的详细信息

image_to_data()用来获取识别出来的文字的详细信息,包含识别到的文本内容,可信度,位置等:

img_fn = 'bookseg.png'
lang = 'chi_sim'
data = ts.image_to_data(img_fn,lang)
print(data)

运行结果:

最后一列是识别出来的文本内容,往前一列是识别出来的可信度,再往前4列是在图片中的位置,包含left,top,width,height等4个要素。

注意image_to_data()返回的是str类型的数据,如果要使用其中的conf可信度,left,top等位置信息,还需要经过提取、转换才能得到。

5、识别图片中的文字和位置

image_to_boxes()用来获取识别出来的文字和位置信息:

img_fn = 'bookseg.png'
lang = 'chi_sim'
boxes = ts.image_to_boxes(img_fn,lang)
print(boxes)

运行结果:

这种方法得到的位置信息和image_to_data()中得到的left,top,width,height位置信息是一样的。同样image_to_data()返回的结果也是一个字符串,如果要使用其中的单个字符和位置信息,也需要进行提取和转换。

6、识别osd信息

image_to_osd()返回识别到的osd信息:

img_fn = 'bookseg.png'
lang = 'chi_sim'
osd = ts.image_to_osd(img_fn,lang)
print(osd)
print(type(osd))

运行结果:

Page number: 0
Orientation in degrees: 0
Rotate: 0
Orientation confidence: 37.74
Script: Han
Script confidence: 1.43

<class 'str'>

7、识别并生成xml文件

image_to_pdf_or_hocr()可以将识别的文字信息转为xml格式字节流,从而可以写入到xml文件中,其中入参extension设置为’hocr’:

img_fn = 'bookseg.png'
lang = 'chi_sim'    
hocr = ts.image_to_pdf_or_hocr(img_fn, lang, extension='hocr')
with open('test.xml', 'w+b') as f:
    f.write(hocr)  
print(type(hocr))

调用image_to_pdf_or_hocr()返回的数据类型为bytes类型,这点和前面几种方法的返回结果是有差异的,bytes类型可以用wb方式写入到文件,写入完成后打开文件可以看该文件包含了识别文字、可信度、位置信息等内容:

原文链接:http://www.juzicode.com/image-ocr-pytesseract

避坑指南:

1、提示tesseract未安装错误:

import pytesseract as ts
version = ts.get_tesseract_version()
print('version:',version)

======运行结果
FileNotFoundError: [WinError 2] 系统找不到指定的文件。
......
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information.

原因:一个是没有安装tesseract命令行工具,一个是安装完后没有把安装路径添加到PATH系统变量中。

2、获取不到支持的语言包:

img_fn = 'bookseg.png'
lang = 'chi_sim'
text = ts.image_to_string(img_fn,lang,config='--tessdata-dir d:\\dev\\Tesseract-OCR5.0.0\\tessdata')
print(text)

======运行结果
pytesseract.pytesseract.TesseractError: (1, 'Error opening data file d:devTesseract-OCR5.0.0tessdata/chi_sim.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. Failed loading language \'chi_sim\' Tesseract couldn\'t load any languages! Could not initialize tesseract.')

使用config参数指定语言包路径时,不能使用右斜杠,只能使用左斜杠。

#text = ts.image_to_string(img_fn,lang,config='--tessdata-dir d:\\dev\\Tesseract-OCR5.0.0\\tessdata')
text = ts.image_to_string(img_fn,lang,config='--tessdata-dir d:/dev/Tesseract-OCR5.0.0/tessdata')

3、使用–oem 0选项时提示不支持老版本的ocr引擎,需要切换为–oem 1或者不指明oem默认使用新的ocr引擎:


img_fn = 'bookseg.png'
lang = 'eng'
text = ts.image_to_string(img_fn,lang,config='--oem 0')

======运行结果
pytesseract.pytesseract.TesseractError: (1, "Error: Tesseract (legacy) engine requested, 
but components are not present in d:\\dev\\Tesseract-OCR5.0.0/tessdata/eng.traineddata!! 
Failed loading language 'eng' Tesseract couldn't load any languages! Could not initialize tesseract.")

推荐阅读:

有了这个方法群聊斗图你就不会输了

只需几行代码生成22种风格各异的彩色图

你别耍我,0.1+0.2居然不等于0.3?

如何实现一个“万能”的调试打印函数

有了这款神器,什么吃灰文件都统统现形

一行代码深度定制你的专属二维码(amzqr)

桔子菌和超市老板田大爷的一次角色互换经历

改造getpass,强迫症患者再也不用担心少输字符了

来看看怎么用OpenCV解构Twitter大牛的视觉错觉图

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pytesseract提取识别图片中的文字 的相关文章

  • python ocr 识别中文pdf_pytesseract识别PDF文件中的文字(OCR)

    前言 xff1a 由于要利用一些比较老的文献中的数据 xff0c 手工输入费时费力 xff0c 于是乎找到了下面的方法 如果不差钱可以使用Adobe Acrobat Reader中的文字识别 xff0c 也可以尝试其中的试用版 下面的方法完
  • 利用pytesseract进行图片文字识别

    pytesseract是基于Python的OCR工具 xff0c 底层使用的是Google的Tesseract OCR 引擎 xff0c 支持识别图片中的文字 xff0c 支持jpeg png gif bmp tiff等图片格式 安装 pi
  • Python OCR工具pytesseract详解

    pytesseract是基于Python的OCR工具 xff0c 底层使用的是Google的Tesseract OCR 引擎 xff0c 支持识别图片中的文字 xff0c 支持jpeg xff0c png xff0c gif xff0c b
  • Python-pytesseract识别验证码(安装-使用)

    1 安装pytesseract windows github wiki xff1a https github com UB Mannheim tesseract wiki 64位 xff1a https digi bib uni mannh
  • Python「pytesseract」:中文识别模块

    在处理 ttf 文件时 xff0c 遇到了识别图片中中文的情况 xff0c 常见的方式是调用百度的语言识别接口 xff0c 但是这里为了大批量的识别 xff0c 首先试了试 python 自带的语言识别模块 pytesseract xff0
  • Python3 pytesseract识别简单的验证码

    安装tesseract并添加到系统PATH Python3 pytesseract识别简单的验证码 xff0c JPEG格式 xff0c 验证码样式如下 xff1a 此验证码比较简单 xff0c 因此简单二值化处理 xff0c 然后使用py
  • python文字识别 训练_Python3.x:pytesseract识别率提高(样本训练)

    Python3 x xff1a pytesseract识别率提高 样本训练 1 xff0c 下载并安装3 05版本的tesseract 2 xff0c 如果你的训练素材是很多张非tif格式的图片 xff0c 首先要做的事情就是将这么图片合并
  • python+pytesseract 中文识别

    继写了第一篇 包含验证码识别的自动化登录脚本后在一次与朋友聊天中谈到中文识别 想起Tesseract OCR是有这个包的 xff0c 然后我就搞了搞 coding 61 utf 8 from PIL import Image import
  • python利用pytesseract识别图片验证码

    1 pytesseract是什么 pytesseract是python的一个光学字符识别模块 可用来做图片文字识别 2 什么是光学字符识别 光学字符识别即Optical Character Recognition xff0c 简称OCR x
  • Python之pytesseract模块-实现OCR

    欢迎关注原创视频教程 Python微信订餐小程序课程视频 https edu csdn net course detail 36074 Python实战量化交易理财系统 https edu csdn net course detail 35
  • python使用pytesseract识别验证码的方法

    1 系统环境 OS X 10 7 MacBook Pro 13英寸 xff0c 2012年初期 Python 2 7 2 需要软件包 a 需要安装PIL以及pytesseract库 Python tesseract是一个基于google 3
  • pytesseract 进行中文识别问题

    问题 xff1a pytesseract 中文识别 xff1a pytesseract pytesseract TesseractError 1 Tesseract Open Source OCR Engine v3 04 01 with
  • pytesseract提取识别图片中的文字

    目录 1 获取tesseract版本号 2 获取语言包列表 3 识别图片中的文字 4 获取图片中文字的详细信息 5 识别图片中的文字和位置 6 识别osd信息 7 识别并生成xml文件 避坑指南 xff1a pytesseract是对Tes
  • pytesseract的使用 | python识别验证码

    目录 1 安装tesseract2 安装pytesseract3 修改包中部分代码4 代码网站测试 1 安装tesseract 详见 xff1a https blog csdn net lijiamingccc article detail
  • anaconda中通过pytesseract识别中文字符

    使用pytesseract识别中文字符 环境的安装可以参考 xff1a https editor csdn net md articleId 61 109255325 首先 xff0c 需要下载相应的数据集 xff0c 可以自行搜索官网 x
  • pytesseract识别数字

    针对工程需求精度不够 xff0c 目前只能识别率为86 左右 用tesseract的深度学习可能会好一点 xff0c 没搞懂怎么用 xff1f 单张图片 import cv2 import numpy as np import matplo
  • Windows10 安装 pytesseract 出错 Error opening data file Tesseract-OCR\tessdata/eng.traineddata

    首先表明自己出现的错误 xff1a D BuildFolder tesseract ocr testing gt tesseract dlld exe eurotext tif eurotext span class hljs keywor
  • pytesseract Mac

    最近写了个打卡程序 登录要填验证码 超级鹰平台的免费次数用完了 得知pytesseract库可以识别图片中的文字 就学习了一下 在mac上也遇到了些问题 其实跟mac没太大问题 主要是网上教程多是win系统的 所以留下一篇傻瓜教程方便以后用
  • 使用python进行图片的文字识别

    使用python进行图片的文字识别 文章目录 使用python进行图片的文字识别 安装 Tesseract OCR 安装过程 配置系统的环境变量 安装python的第三方库 Pytesseract库 Pillow库 运行个demo 安装 T
  • Windows安装Tesseract OCR与Python中使用pytesseract进行文字识别

    文章目录 前言 一 下载并安装Tesseract OCR 二 配置环境变量 三 Python中安装使用pytesseract 总结 前言 Tesseract OCR是一个开源OCR Optical Character Recognition

随机推荐

  • 定时任务方案的正确选取

    在电商 支付等领域 xff0c 往往会有这样的场景 xff0c 用户下单后放弃支付了 xff0c 那这笔订单会在指定的时间段后进行关闭操作 xff0c 细心的你一定发现了像某宝 某东都有这样的逻辑 xff0c 而且时间很准确 xff0c 误
  • Redis教程总结

    Redis redis 时间轮 夜猫吃夜宵的博客 CSDN博客 一 Redis特性 快 为什么快 xff1f 基于内存操作 xff0c 操作不需要跟磁盘交互 本身就是k v结构 xff0c 类似hashMap xff0c 所以查询速度接近O
  • Shiro和Spring Security对比(3)

    https www cnblogs com hanease p 15906339 html 1 两个基本的概念 安全实体 xff1a 系统需要保护的具体对象数据权限 xff1a 系统相关的功能操作 xff0c 例如基本的CRUD 1 2 S
  • springboot整合邮箱功能一(实战)

    背景介绍 邮件发送其实是一个非常常见的需求 xff0c 用户注册 xff0c 找回密码 校验码等地方 如果使用短信还需缴费 这里发送者邮箱选用了163邮箱 1 pom xml文件的引用 lt xml version 61 34 1 0 34
  • Apache Camel简介

    Apache Camel简介 abinge89的博客 CSDN博客 1 什么是Camel 1 1 来源 Camel项目开始于2007年初 xff0c 虽然年轻 xff0c 但它已经是一个成熟的开源项目 xff0c 基于自由的Apache 2
  • springboot整合邮箱功能二(普通邮件, html邮件, thymleaf邮件)

    SpringBoot整合Email发送邮件 空 白 xfffd 的博客 CSDN博客 https www cnblogs com erlou96 p 16878192 html label1 5 1 准备工作 1 1 qq邮箱设置 本文默认
  • MySQL中Truncate用法详解

    MySQL中Truncate用法详解 Mysql 脚本之家 前言 xff1a 当我们想要清空某张表时 xff0c 往往会使用truncate语句 大多时候我们只关心能否满足需求 xff0c 而不去想这类语句的使用场景及注意事项 本篇文章主要
  • cesium 移除实体方法

    问题 xff1a cesium 移除entity 后 xff0c viewer entities values没有任何entity时 xff0c 图层上还会显示 解决方法 xff1a 无效方法 1 模拟代码 viewer entities
  • 时间轮算法在Netty和Kafka中的应用

    1 时间轮算法 时间轮算法 xff08 Time Wheel Algorithm xff09 是一种高效的定时器实现方式 xff0c 主要用于高并发下的定时任务调度 它利用了循环数组的思想 xff0c 将时间轴分成一个一个的时间槽 xff0
  • RabbitMQ事务概述

    RabbitMQ支持事务 transaction xff0c RabbitMQ中与事务机制有关的方法有三个 xff1a txSelect txCommit 以及txRollback xff08 1 xff09 txSelect用于将当前ch
  • 消息队列原理和应用场景简介

    一 消息队列的场景 异步处理流量控制服务解耦发布订阅高并发缓冲 1 1 异步处理 主要场景 xff1a 短信通知 终端状态推送 App推送 用户注册等 秒杀系统为例 更快速返回结果 xff1b 减少等待 xff0c 实现并发处理 xff0c
  • 消息队列-ZeroMQ

    一 吞吐量和延时性 二 ZeroMQ解决传统网络编程的问题 调用的socket接口较多 xff1b TCP是一对一的连接 xff1b 一对多 xff0c reactor模式编程需要关注很多socket细节问题 xff1b 不支持跨平台编程
  • SpringSecurity登录原理(源码级讲解

    SpringSecurity登录原理 xff08 源码级讲解 xff09 简书 一 简述 首先会进入UsernamePasswordAuthenticationFilter并且设置权限为null和是否授权为false xff0c 然后进入P
  • Spring Security生命周期简述

    Spring Security系列 Spring Security生命周期之起源 springsecurity生命周期 马各马它的博客 CSDN博客 Spring Security系列 Spring Security生命周期之诞生 spri
  • @Import注解详解

    64 Import注解详解 中年危机的老男人的博客 CSDN博客 一 64 Import注解提供了三种用法 64 Import一个普通类 spring会将该类加载到spring容器中 64 Import一个类 xff0c 该类实现了Impo
  • Spring Security简单身份认证配置(thymleaf,密码加密,JDBC,LDAP)

    Spring Security系列 Spring Security简单身份认证配置 二 websecurityconfig login post 马各马它的博客 CSDN博客 一 认证 登录 流程 引用spring boot starter
  • 系统编程__2__父子进程的创建和回收

    系统编程 这里写的是对于小白来说更多的了解系统编程的文章 xff0c 有写的不对的地方还恳请各位大佬指出错误 xff0c 小编一定会多多采纳 手动多谢 那么 xff0c 上一次我们稍微了解了一下关于系统编程的一些主要内容 没有看到的童鞋还请
  • MobaXterm工具

    1 登录 1 1 远程登录 1 1 1 内建命令行模式 1 点击图标 xff0c 在弹出的窗口中选择SSH连接 xff0c 然后填入Remote host IP及用户名 2 点击确认后输入密码即可 1 1 2 Gnome模式 类似VNC 1
  • window bat cmd 获取cpu 利用率(使用率) 方式收集

    window bat cmd 获取cpu 利用率 使用率 跟 性能计数器一致 xff0c 方式收集 1 typeperf 1秒一输出 typeperf 34 processor total processor time 34 若是只要执行一
  • pytesseract提取识别图片中的文字

    目录 1 获取tesseract版本号 2 获取语言包列表 3 识别图片中的文字 4 获取图片中文字的详细信息 5 识别图片中的文字和位置 6 识别osd信息 7 识别并生成xml文件 避坑指南 xff1a pytesseract是对Tes