Python图片文字识别——Windows下Tesseract-OCR的安装与使用
前言Windows下Tesseract-OCR的安装与配置Tesseract-OCR简介与版本选择tesseract-OCR安装Tesseract-OCR配置安装Python调用Tesseract API所需依赖项Tesseract-OCR测试与使用命令行模式使用 Python 调用 Tesseract API温馨提示前言
最近想做一篇爬虫分析给男朋友/女朋友送礼物的博文,但是在某宝上使用“七夕礼物送女友”
关键字进行搜索得到的商品的标题很多都是类似这样的《生日礼物女生七夕情人节给闺蜜送女友朋友送给女孩的实用小高级感》
,让人仅看标题根本不知道卖的是什么,但是看到很多封面图片上包含的有商品名或者商品说明,于是想到可以识别封面图中的文字进行分析。
虽然可以通过自己训练模型来实现此效果,但暂时又实在是比较懒惰,就使用了现有工具Tesseract
,将安装和使用进行分享。
Windows下Tesseract-OCR的安装与配置
提取、识别图片中的文字也称为光学字符识别 (Optical Character Recognition, OCR),其是指将手写或印刷文本的图像转换为文本,包括来自扫描文档、文档照片、场景照片(例如风景照片中标志和广告牌上的文字)或叠加在图像上的字幕等文字。
Tesseract-OCR简介与版本选择
Tesseract 是一个开源 OCR 引擎,Tesseract 可以直接通过命令行使用,或者通过使用 API 从图像中提取文本。它为多种语言提供了API,其中显然包括 Python。除了可以使用二进制安装包进行安装外,也可以针对各种设备使用源代码进行编译,包括 Android 和 iPhone。Tesseract 支持 unicode (UTF-8),可以识别 100 多种语言。Tesseract 支持各种输出格式,包括纯文本、HTML、PDF、TSV等,5.0.0 alpha 还增加了对 XML 输出的支持。
目前,Tesseract 主要包含三个版本:3.x、4.x和 5.0.0 alpha。最新的 3.x 版本(可用于某些具有特殊需求的项目,如特征回归)为 3.05.02,于 年 6 月 19 日发布;最新的稳定版本(基于 LSTM)是 4.1.1,发布于 年 12 月 26 日;5.0.0 alpha 对代码进行了重构,增加了一些实验性的功能。参考官方意见,由于需要使用 Tesseract API,因此选择使用 4.1.0。
有关 Tesseract 的更多介绍,可以参考官方文档.
tesseract-OCR安装
安装过程主要参考官方文档。
首先,下载根据需要下载安装包,这里选择 tesseract-ocr-w64-setup-v4.1.0.0314.exe。
双击下载完成的安装包进行安装。
点击Next
后,经典同意 (I Agree) 服务条款。
单击I Agree
后,选择为所有用户或仅当前用户安装,这里选择默认的为所有用户。
单击Next
后,选择附加脚本和语言数据。
根据需要,选择附加脚本数据:
根据需要,选择附加语言数据:
这里选择了中文相关的附加语言包:
点击Next
后,选择软件安装位置,这里使用默认位置。
Warning: Tesseract 应该安装默认目录或新目录中,否则由于卸载程序会删除整个安装目录,会导致该目录及其所有子目录和文件被删除。
点击Next
后,选择是否创建快捷方式,及快捷方式位置。
由于我只想使用 Tesseract API,因此此处选择不创建快捷方式,勾选Do not create shortcuts
前复选框,如果需要快捷方式,取消勾选此复选框即可。
点击Install
开始安装。
安装完成后,点击Next
。
最后点击Finish
完成安装。
Tesseract-OCR配置
将 Tesseract 添加进环境变量中。右键单击“此电脑
”,选择“属性
”,单击“高级系统设置
”,然后单击“环境变量
”,“编辑
”系统环境变量“Path
”,选择“新建
”将 Tesseract-OCR 的安装目录(此处展示的安装目录为默认位置,如果修改了安装目录需要根据自己的安装位置进行修改)添加到环境变量中。
“确定
”生效后,可以在shell
中运行以下命令进行验证:
tesseract -v
若成功配置,则会打印版本信息:
tesseract v4.0.0.0314leptonica-1.78.0libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.3) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.2.0Found AVX2Found AVXFound SSE
安装Python调用Tesseract API所需依赖项
安装 pillow,在命令行 shell 中使用以下命令pip install pillow
安装 pytesser3,在命令行 shell 中使用以下命令
pip install pytesser3
安装 pytesseract,在命令行 shell 中使用以下命令
pip install pytesseract
Tesseract-OCR测试与使用
如果需要提取的文字并非英文,则还需要下载其他语言的数据包,但是,如果在安装过程已经选择了所需的附加语言数据则不需要再次下载;否则需要在下载所需语言包后,将其置于C:\Program Files\Tesseract-OCR\tessdata
目录下(如果修改了默认安装目录,需要根据自己的安装位置进行修改)。
除了直接使用程序外,还可以使用以下两种方式调用 Tesseract。
命令行模式
命令格式如下:
tesseract 输入图片的文件名 输出文件名 [-l lang][-psm pagesegmode][configfile...]
例如识别 “test.png” 图片中文字,保存至 “result.txt” 文件中。
tesseract test.png result
可以看到识别的准确率非常优秀。
使用 Python 调用 Tesseract API
测试使用 Tesseract 识别中文的准确率。
import pytesseractfrom PIL import Imageimg = Image.open("test_1.png")print(pytesseract.image_to_string(img,lang='chi_sim'))
识别图片:
识别结果:
通过反射填充(reflection padding)减少块伪影当我们在卷积层中将填充( padding )应上的图像q导致块伪影。减少这些高频分量的一种方法是在网络训练于输入张量时,在张量周围填充常数网1. 首先,通过将|2. 然后减去原始|像移动一个像素来计算高频分量,像以创建一个矩阵。加添加总变分损失( total variation loss )作为正则化器:。但是,边界处的值突然下降会产生高频分量,
看到识别的问题问题并不大,但是格式很奇怪,接下来试一下识别商品图片上的文字:
img = Image.open("test_2.webp")print(pytesseract.image_to_string(img,lang='chi_sim'))
识别图片与识别结果如下所示:
识别效果,呃,能用只能说。