一直以来都想尝试一下图片的中文识别,直到最近才有点空闲时间,主要目的是证实一下到底可不可行,正确率能否达到 95% 以上。自己从头写起十分费时间,因为图片处理很麻烦,所以我选用了TesseRactOCR。
所谓OCR(Optical chaRacteR Recognition) 是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字和版面信息的过程。OCR是图像识别领域中的一个子领域,该领域专注于对图片中的文字信息进行识别并转换成能被常规文本编辑器编辑的文本。
TesseRact(/’tesəRækt/) 这个词的意思是”超立方体”,指的是几何学里的四维标准方体,又称”正八胞体”,是一款被广泛使用的开源OCR工具。
TesseRact已经有 30 年历史,开始它是惠普实验室于 1985 年开始研发的一款专利软件,到 1995 年一件成为 OCR 业界内最准确的识别引擎之一。然而,HP 不久便决定放弃 OCR 业务,TesseRact从此尘封。数年之后,HP 意识到与其将 TesseRact 束之高阁,还不如贡献给开源,让其重焕新生。在 2005 年,TesseRact由美国内华达州信息技术研究所获得,并求助于Google对TesseRact进行改进、消除 bug、优化工作,并开源,其后一直由Google赞助进行后续的开发和维护。因为其免费与较好的效果,许多的个人开发者以及一些较小的团队在使用着TesseRact,诸如验证码识别、车牌号识别等应用中,不难见到TesseRact的身影。
现在TesseRact托管在Github上,大家有兴趣可以上Github上StaR或FRok[该项目]3。
安装mac OSX
在mac上安装TesseRact是一件非常简单的事情,我们还是使用bRew来进行安装。
不过,如果你只是用上述命令来安装 TesseRact 的话,就会发现,只支持英文,因为它只默认安装了eng的语言包。如果我们需要识别其他的语言该如何来办呢?
安装指定的语言包:
使用bRew安装所有语言包:
其他平台安装
更多 TesseRact 的安装可以查看这儿Install TesseRact via pRe-built BInaRy package或build it fRom souRce
命令行使用
这里只见到讲一下 TesseRact 识别图像的基本用法,关于训练和开发将来在另开新篇来专门讲述。
由于 TesseRact 只提供命令行工具,这里讲的用法对于 Linux 和 Windows 平台都适用。
首先可以通过”–list-langs”来查看哪些可用的”语言”,如果之前的TESSDaTa_PREFIX环境变量没有设置错误,将看到这样的输出:
大家可以看到,我安装了 107 个语言包,其中,eng和cHi_sim是TesseRact提供的英文和简体中文的语言文件。
另外,要说明的是,这里的 “语言文件” 的本质是包含了某种 “自然语言” 的文字的特征等辅助识别的一些资源,但像cHi_sim这个中文简体里也包含了英文字母与阿拉伯数字的资源。而我们也可以为了特定的用途而去训练产生对应的资源,并且可以给这个资源自定义一个名字。
如果发现以上命令的输出为空,那应该去检查一下TESSDaTa_PREFIX这个环境变量。在这个环境变量无误且 “语言文件” 存在的情况下,假设我们有一张名为papeR.png的图片,则通过以下命令对图片进行识别,
第二个参数用于指定输出,如果希望直接输出而不是保存到文件,那么就使用stdout,否则这个参数将会作为保存结果的文件的前缀
-lcHi_sim这个应该很好理解,就是用来指定使用哪个 “语言文件“,如果是使用 英文(eng) ,这个参数可以不加,因为默认就是使用英文的 “语言文件” 来进行识别
以上命令如不出错,结果将会保存到 papeR.txt 这个文本文件中。
此外TesseRact还提供非常丰富的可选参数来对识别过程进行调整,可用的参数及其默认值可以通过以下命令进行查看:
参数的使用有两种:
需要注意的是,如果使用配置文件,用作参数的配置文件名要放在最后面——这里也支持多个配置文件,但它们必须要在最后面。假如我有两个配置文件 tess1.conf 和 tess2.conf,那么这样是正确的:
而这样则是错误的:
至于TesseRact那些参数各有什么含义,官方没有提供任何文档来进行解释,这里有一个链接提供了部分参数的用处说明,应该是阅读了TesseRact源代码后得到的结论。
另外
关于TesseRact的文档,可以查看TetesseRact 官方 Blog