#Python文字识别#上一篇内容,我们详细介绍了使用EasyOCR进行文字识别的过程。今天,我们介绍另一种图片文字识别的Tesseract库。
很多小伙伴在使用Tesseract库时,遇到一些难避的坑。其实,都是安装、配置不合理导致的,小伙伴们按照我介绍的方法一定可以避免入坑,不信,跟着我试试看!
关于Tesseract
开始之前,我们需要知道这些内容:
Tesseract是一个开源文本识别 (OCR) 引擎(注意:这里是引擎,而不是Python库),可在 Apache 2.0 许可下使用。主要版本5是当前的稳定版本,并于2021年11月30日从5.0.0版本开始。Tesseract可以直接通过命令行使用,或者(对于程序员)通过使用API(提供的调用接口,如:C、Python等)从图像中提取打印文本。它支持多种语言。根据Apache License 2.0的条款,Tesseract 可以在自己的项目中使用。它具有功能齐全的API,并且可以针对包括Android和iPhone在内的各种目标进行编译。如何获取Tesseract的文字识别功能呢?
【安装Tesseract-OCR】
在使用这个引擎之前,我们需要安装一个软件,这个软件叫Tesseract-OCR,它是使用Tesseract的基础,它支持很多操作系统,如windows、linux、MacOS等等。我们这里要安装Tesseract-OCR的最新5.0版,准确率较之前的版本有很大提升。
下面,我们以windows系统为例,演示下安装过程,其它系统小伙伴自行从官网研究解决吧。
首先,我们需要下载tesseract-ocr这个软件,下载比较快的地址在下面(我可是找了半天才找到,地址在下面红色框线内,自己敲吧!
需要说明的是,这里应选择跟自己系统匹配的版本下载。比如,我的是64位系统,那么,我下载的时候就应选择类似XXX_w64_XXX这样的版本。下载下来以后大概长这样。
然后我们双击运行,第一步,需要我们选择软件语言,很遗憾,没有简体中文版,先选择默认的“English”吧。然后点击‘OK’。
弹出下面这个界面之后,一路“I Agree”、“Next”即可。

单击“I Agree”后,弹出下图:

上图单击“Next”后,出现下面的设置界面。

上图中最后两个设置,需要我们勾选安装相关的组件和语言数据,这里根据需要勾选即可,重点看一下简体中文支持组件及数据的下载(最好把Han开头的都勾选上,图片没有勾全)。


上述勾选完成后,点击“Next”选择安装目录

之后,一路“Next”直到完成安装。这一步之前,可能弹出一些提示诸如Han开头的组件下载异常的提示对话框,直接单击“确定”即可。这里说明我们的语言包下载失败了,暂且不去管它。反正我一直没下载成功,不晓得小伙伴们是不是人品要好点^-^


到这里,我们就安装成功了,细心的小伙伴可能发现了,上图对话框中有个链接“View Tesseract on GitHub”,这个就是Tesseract的官网地址了,可以进一步学习。
【一个有用的配置】
上面软件安装成功后,我们即拥有了一个免费的文字识别软件。
但如果你去试,这个软件暂时是没法使用的。需要进行一些配置:
首先,我们需要将软件安装目录添加到系统环境变量中,这样做的好处是,我们不必每次执行命令就输入软件的路径,省时省力!。具体方法如下:
右击【我的电脑】,选择【属性】(这里是Windows10系统,不同系统略有差异)
弹出【系统属性】对话框,选择【高级】-【环境变量】,如下图

弹出【环境变量】设置窗口后,点击【新建】,弹出【新建用户变量】,对话框中作如下设置
完成后点击【确定】,后返回【环境变量】设置界面,双击用户的Path这一行
弹出【编辑环境变量】,单击【新建】,后单击【确定】即可完成设置

设置完成之后,我们就可以使用了?
【语言包数据下载及安装】
细心的小伙伴肯定发现了,我们的语言包没有安装成功,这时,如果使用Tesseract进行文字识别,一般会出现以下问题:
软件默认没有安装成功语言包,这里需要我们手动安装。好了,返回之前我们下载Tesseract-OCR的那个网址,找到tessdata_fast这个文件夹,将中文语言包下载下来。
然后将下载下来的语言包直接放在tessdata文件夹下即可。
这样,我们就完成了Tesseract-OCR的初始设定。那么,怎么判断是否安装、配置成功呢?
【如何判断是否安装、配置成功】
首先,在命令行提示符下输入tesseract –version如下图
上面验证版本信息,成功。下面使用tesseract –list-langs可以列出当前可用的语言包。
下面,我们来看看命令行下如何使用这个软件进行文字识别。
命令行下文字识别(不使用Python库)
这个问题,我们之前测试的时候就涉及了,如果之前的配置、语言包等都完成了,那么,这一步就很简单,使用下面的命令来识别一幅图片。
tesseract 待识别的图片路径 识别存放结果的文本文件路径 -l 需要识别的语言
没错,就是这么简单,我们将上一篇中的《明日歌》图片命名为"test.jpg",在图片所在目录下按"Shift",单击鼠标右键,调出PowerShell,输入下面内容:
tesseract test.jpg result.txt -l chi_sim
备注:chi_sim为中文语言包名称,这里-l指明使用的语言包名称,如果不指定,默认输出英文,这里会识别一堆无意义的英文字符
看下识别效果。
我们对比之前EasyOCR的识别结果,这个稍好一点,错别字比较少。
这个工具其实还有一些有用的参数,比如,我们想让结果变成一个pdf文档,那么,使用下面语句。
tesseract test.jpg result -l chi_simpdf
没错,只要在最后加上pdf就可以了。
我们知道Tesseract只是一个文字识别引擎,作为一款强大的、众人皆知的文字识别引擎,它一定有Python接口(有点武断了),到底有没有这样一个接口呢?如果有,如何调用Python的接口进行文字识别?
pytesseract库实现文字识别
接触一个第三方库之前,我们首要解决的问题是如何安装它!
【安装】
pip install -i 国内源 pytesseract
加上-i参数,快速安装它
【如何使用】
方法很简单,下面5行代码搞定!
import pytesseract
from PIL import Image
im=Image.open('test.jpg')
result= pytesseract.image\_to\_string(im,)
print(result)
看下运行效果,如下图:
我们看到,这里也能够成功识别文字,而且出现错别字的几率很小(相比较EasyOCR)。很显然,EasyOCR虽然简单(安装、配置方面),但是识别能力上不如pytesseract库,但pytesseract库安装、配置方面却稍显复杂。