文字OCR识别技术现在已经相当成熟了,无论是准确度还是识别速度都能满足我们日常生活的需要;今天介绍一个Python包,该包的主要功能就是用于OCR识别,包的名字为:Pytesseract,借助这个包几行代码就能快速识别一张文本图片。
Pytesseract包是由开源工具Tesseract得到的,由Hewlett Packard实验室开发,在2005年实行开源;自2006年之后由谷歌和一些优秀的开源贡献者共同开发维护。
Tesseract在3.x版本之后逐渐成熟,支持多种图片格式并且逐步加入多种语言文本识别;但Tesseract3.x版本依旧是基于传统计算机视觉算法,在过去的几年得益于深度学习deep learning的快速迭代,无论是准确率与速度方面都要优于传统算法;在4.0版本之后Tesseract加入了deep learning模块,是基于识别Recognition的LSTM,而LSTM是可归类为循环卷积神经网络RNN。
以Tesseract3.05版本为例,该版本相比4.0、5.0(基于深度学习)在中文语言识别方面准确率稍次。
环境:
操作系统: Win10;
Python 3.8;
pyteeseract 0.3.8;
Tesseract 3.05;
pytesseract 安装
1、安装 tesseract 工具
相对其它程序包,pyteeseract 的安装步骤会相对繁琐一点,因为 pyteeseract 识别功能是基于 tesseract 开源工具完成的,所以第一步 安装 tesseract ,安装包下载链接:
https://digi.bib.uni-mannheim.de/tesseract/
下载tesseract-ocr-setup-3.05.00dev.exe完之后安装(安装方式就是傻瓜式安装)[也可以下载其他版本]
tesseract 安装成功之后,需把存放 tesseract.exe 的文件路径加入到环境变量中,如下图我的 tesseract.exe 存放的文件夹就是 D:/Tesseract-OCR 加入环境变量即可;
2、pip install pytesseract
在命令行中,用 pip 工具下载 pytesseract 包
pip install pyteeseract # 0.3.8版本
3、修改pytesseract.py 脚本
在 步骤 2 的基础之上,找到 pytesseract 的安装路径,如果 Python 是通过 Anaconda 安装的话的话,安装路径一般都在 Anaconda/Lib/site-packages 文件夹下;找到之后找 pytesseract 文件夹下的 pytesseract.py 脚本文件,
找到之后,用记事本或者代码编辑器打开 pyresseract.py,通过 ctrl +F 快速搜索功能定位 tesseract_cmd ,修改后面的文件路径信息(用上面提到的 tesseract.exe 安装路径进行替换即可);
pytesseract 使用
程序包的用法也相对比较简单,几行代码就能搞定,下面代码就是把一张图片中的文字识别,并转化为 字符串打印出来,选择识别语言 英语( 更改 lang = ‘eng’ 参数即可)
ocr_test.py
import pytesseract
import cv2
img_path = r"C:\Users\zqq\Desktop\ocr_test.jpg"
# 下面一行代码很重要
tessdata_dir_config = '--tessdata-dir "D://Tesseract-OCR//tessdata"'
im = cv2.imread(img_path)
img = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
text = pytesseract.image_to_string(img,lang= 'eng',config= tessdata_dir_config,)
print(text)
效果预览,识别前
识别后
pytesseract 支持将 OpenCV 和 PIL 读取后的图像作为输入,但图像格式需为 RGB 模式,因此 OpenCV 读取之后还要加入一行代码把图像的 BGR 模式转化为 RGB
另外需要注意一点 ,上面实例中下面这一行代码不能去掉(用于后面 image_to_string() 函数中的 config 参数的设置)
tessdata_dir_config = '--tessdata-dir "F://Program Files//Tesseract-OCR//tessdata"'
否则会报下面的错误,tessdata 文件路径定位失败 ,
Failed loading language ‘eng’ Tesseract couldn’t load any languages! Could not initialize tesseract.’)
tessdata 文件路径存放的是语言包文件,是用于 识别图像中不同语言,通过修改 lang 参数来进行设定;但需要知道的是,tesseract 工具起初默认语言为 eng(英文),若需要借助 tesseract 识别不同语种需要下载对应的 语言包文件,安装到 tessdata 文件夹下即可
例如上面案例中我用的是 英语,这里我想识别图片中的中文字符,就需要把中文语言包下载 到 testdata 中,各语言包的下载地址,https://github.com/tesseract-ocr/tessdata
再把代码中 image_to_string() 中 lang 参数设为 chi_sim 即可
pyteeseract 其他用法
https://pypi.org/project/pytesseract/
参考:
https://mp.weixin.qq.com/s?__biz=MzU2NTgxMjUyMQ==&mid=2247485753&idx=1&sn=7ee27699e6b99b3ad69870c5235eed28&chksm=fcb7457fcbc0cc6980569ae8ee362df437cc47bd286431b263bb6efd93039de52ef65db05295&token=1121212502&lang=zh_CN#rd