怎么在自己的电子信息工程专业排名中运用tesseract-CSDN论坛

Tesseract 4 版本具备两种识别引擎:新的基于LSTM(神经网络)引擎与传统引擎。通过在初始化时设定不同的EngineMode启动。

笔者计划Tesseract识别数字及英文(eng.traineddata),希望使用双引擎提升精确度,但发现GitHub的tessdata库中eng.traineddata虽然包含了两种引擎的训练数据,但其中内置的LSTM引擎的训练数据不是最新的(相对于tessdata_best),因此产生了想法,自行构建一个训练数据文件,包含来自于tessdata库中传统引擎训练数据与tessdata_best库中LSTM引擎的训练数据。


含义为:将当前路径上一级目录中的eng.trainneddata解压到当前目录中名称为1的子目录,且所有文件以eng.开头。

执行命令成功效果类似下图:





此时data目录中是一份结合了最新的LSTM及传统引擎训练文件的文件夹。


执行完毕后,就可以获得合并了两种引擎训练数据的文件,如下。


Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。

数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生--2005年,Tesseract由美国内华达州信息技术研究所获得,并求诸于Google对Tesseract进行改进、消除Bug、优化工作。

Tesseract目前已作为开源项目发布在Google Project,其最新版本3.0已经支持中文OCR,并提供了一个命令行工具。

虽然官方提供了多种语言的识别数据包,但是在很多情况下都需要在其基础上自己进行训练,所以记得安装训练工具

2.2 安装语言识别包

从官网地址下载对应的识别包 [官网地址](

再将识别包放置到系统的相应目录中,比如我用 hoembrew 安装,地址位于:

tesseract 的好处就在能够自己训练需要识别的字符,如果只是识别印刷字体这样的需求还是调用 API 比较方便,比如说百度云的文字识别 API。

语言识别的包是识别的基础,下载之后默认自带的是 eng.traineddata 英文识别包。他能够用来识别英文,但是不能识别中文。所以要下载中文的识别包 ch_sim.traineddata 这样就能识别中文。但是发现准确率不高,不符合需求就要训练自己的包。

psm 的参数很重要,表示 tesseract 识别图像的方式,比如说是一行一行识别还是逐字识别。希望逐字识别可以使用 -psm 10,希望逐行识别可以使用 -psm 6,其他没怎么用以后有机会补充。总之,希望有更好的识别效果需要选择合适的 psm。

谷歌翻译结果,自己尝试一下会有体会

方向和脚本检测(OSD)。
 1自动页面分割与OSD。
 2自动页面分割,但没有OSD或OCR。
 3全自动页面分割,但没有OSD。 (默认)
 4假设单列可变大小的文本。
 5假设一个垂直对齐的文本的统一块。
 6假设单个统一的文本块。
 7将图像视为单个文本行。
 9将图像视为一个单个的单词。
 10将图像视为单个字符。

显然准确率不高,进行训练。

11.将文件拷贝到目标文件夹

tesseract 能够进行 OCR 识别,但是对中文的支持不够好。所以如果要更好地识别中文字体需要进行大量的训练,有时间精力当然是一个方案,没有的话还是调用现成的 API 比较好。至少对印刷的中文字识别效果是很好的。

当然,如果有特殊需求用 tesseract 还是比较简单的方案。听说谷歌的 TensorFlow 能够通过机器学习达到很好的识别效果,不过看了看好像有点复杂啊。


我要回帖

更多关于 机械电子工程 的文章

 

随机推荐