从头开始训练自己的 Tesseract 5 LSTM 识别库(超详细)

最新工作中涉及到OCR的内容,用了百度的OCR精度不错,但是速度有点慢,看网上有提到Tesseract这一开源的项目,下载试了一试发现速度是比百度快不少,但是精度差很多,所以研究了下怎么可以提高识别的精度,发现可以通过训练识别库的方式,所以才有了这篇文章,按Tesseract官方的说法,训练有三种方式:一从头开始训练(官方不推荐使用此方法);二对现有模型进行微调训练;三对现有模型的部分神经元网络进行训练,本文是使用的方式一,从头始开始训练完全符合自己需要的字库,废话少说下面开始一步步进行说明。

一、准备工作

1、相关程序和资源

tesseract-ocr:tesseract-ocr-w64-setup-v5.0.1.20220118.exe
tessdata_best:https://github.com/tesseract-ocr/tessdata_best
langdata_lstm:https://github.com/tesseract-ocr/langdata_lstm

文本编辑器:我使用的是notepad++(这个按个人使用的习惯,没有要求),还要用到cmd或者Power Shell,另外jTessBoxEditor这个工具也可下载(需要Java环境),虽然本例子中并不需要jTessBoxEditor,但是可用它打开图片+box文件看看。

2、安装Tesseract-OCR

Tesseract-OCR安装过程中需要选择中文的支持,安装完成后在环境变量中增加路径设置,方便cmd中的使用,这一过程网上有详细的说明,不会的百度一下即可。

3、建立目录结构

在e:盘新建文件夹t,把下载的tessdata_best和langdata_lstm放入,新建output和tmp文件夹,注意下面的所有步骤都是按e:\t这个根路径进行的,都是用的绝对路径,用其它路径当做根目录的请自行修改路径,当然也可以使用相对路径,但是我不喜欢相对路径(需要考虑相对的位置,容易出错),最始的目录结构如下:
E:\T
├─langdata_lstm
├─output
├─tessdata_best
└─tmp

4、处理tessdata_best简体中文库chi_sim.traineddata

1)解包简体中文库chi_sim.traineddata
combine_tessdata -u e:\t\tessdata_best\chi_sim.traineddata e:\t\tessdata_best\chi_sim,执行完成上面这条命令后,就会把chi_sim.traineddata解为几个文件,具体文件内容可以自己去e:\t\tessdata_best文件夹中去看一看。

2)转化dawg字典文件为文本文件(Directed Acyclic Word Graph)
文字字典:
dawg2wordlist e:\t\tessdata_best\chi_sim.lstm-unicharset e:\t\tessdata_best\chi_sim.lstm-word-dawg e:\t\tessdata_best\word.txt
数字字典:
dawg2wordlist e:\t\tessdata_best\chi_sim.lstm-unicharset e:\t\tessdata_best\chi_sim.lstm-number-dawg e:\t\tessdata_best\number.txt
标点符号字典:
dawg2wordlist e:\t\tessdata_best\chi_sim.lstm-unicharset e:\t\tessdata_best\chi_sim.lstm-punc-dawg e:\t\tessdata_best\punc.txt

5、研究tessdata_best的字符集文件
用文本编辑器打开字符集文件,就是e:\t\tessdata_best\chi_sim.lstm-unicharset,可以看到4022这个数字(这是一个重要的数字),第5行是字母“S”,第4023行是汉字“掺”,从“S”到“掺”这4019行就是tessdata_best中文的全部编码,同理也可以自己查看一下tessdata_fast中文编码也是4019个,tessdata多一些有5071个(tessdata的文件名为chi_sim.unicharset),编码文件内容看来没有什么规律,为了方便看少了什么字,本人进行了变换处理(只保留编码字符并按GB2312顺序排序),结果如下:字符数字标点符号共有120个(其中多了一个GB2312中没有的〇),汉字有3899个,可GB2312有汉字6763个(一级汉字3755,二级汉字3008个),这个差距有点大呀,所以tessdata汉字识别精度不高在所难免(字符集中都没有还怎么识别呀)。

下面开始关键的步骤

二、生成字符集lstm-unicharset文件

1、生成字符集txt文件
把字符集所要包含的数字、字母、标点符号和汉字,保存在e:\t\chi_si

  • 13
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 36
    评论
### 回答1: Tesseract-OCR是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可以将图片中的文字转换为可编辑的文本。它最早由惠普实验室开发并于2005年移交给Google维护。 Tesseract-OCR基于机器学习算法,能够从图像中准确地识别出文字。它支持多种语言,包括中文,而且能够适应各种场景,如印刷品、手写文字、图片中的文字等等。 使用Tesseract-OCR的过程相对简单。首先,需要将待识别的图片转换为适合Tesseract-OCR处理的格式,如TIFF或PNG。然后,调用Tesseract-OCR的API,将图片作为参数传递给,即可得到识别结果。 Tesseract-OCR识别具有以下几个优点。首先,它是一个开源项目,这意味着任何人都可以查看、修改和提升其代码,使其更适应不同的需求。其次,它训练有素,可以提供高准确率的文字识别结果。此外,Tesseract-OCR还可以通过训练自定义字体来提高特定字体的识别准确率,这一点对于需要处理特定类型文字的应用非常有用。 然而,Tesseract-OCR也存在一些局限性。首先,它对于复杂图形或低分辨率的图片的识别效果较差。其次,虽然Tesseract-OCR支持中文识别,但对于一些特殊的中文字符或排版形式可能出现辨识错误的情况。 综上所述,Tesseract-OCR是一个功能强大的OCR识别,适用于各种场景的文字识别需求。无论是从印刷品、手写文字还是图片中提取文字,Tesseract-OCR都能够提供准确的识别结果,并且其开源性质和可定制化的特点为用户提供了更大的自由度。 ### 回答2: Tesseract-OCR识别是一个开源的光学字符识别(OCR)工具,由HP实验室开发,现由Google维护。它能够将印刷体或手写体的文字转换为计算机可识别的文本。 Tesseract-OCR识别支持多种语言和平台,并且是一个高度准确的OCR引擎。它具有丰富的功能,包括自动文本分区、文本对齐和格式化、自动旋转图像等。此外,它还可以识别多个字体、文字大小和颜色的文本。 Tesseract-OCR识别的使用也非常简单。它可以通过API或命令行界面进行调用和集成,还提供了生成HTML、PDF等格式文件的功能。用户可以通过调整参数来优化识别结果,如设置语言、字体和识别区域等。 Tesseract-OCR识别在各种应用中得到广泛应用。它可以用于数字化文档、扫描文档、文本识别和自动化处理等方面。通过将纸质文档转换为可编辑的文本文件,可以提高办公效率和搜索能力,并方便文档的归档和分享。 总的来说,Tesseract-OCR识别是一个强大且易于使用的工具,能够准确地将印刷体或手写体的文字转换为计算机可识别的文本。它的广泛应用范围使它成为数字化时代的重要工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值