Tesseract-OCR3.0语言库训练步骤

本文介绍如何使用 Tesseract OCR 工具训练新的语言模型,包括创建必需的配置文件和训练数据,以及如何测试训练后的模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.csdn.net/lingjiuhun/article/details/7886222


本文在Google code的原文地址:https://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3


要训练一个新的语言(自定义语言或者某种自然语言都可以)对应的traineddata文件,需要产生下列过程文件:

? lang.config

? lang.unicharset

? lang.unicharambigs

? lang.inttemp

? lang.pffmtable

? lang.normproto

? lang.punc-dawg

? lang.word-dawg

? lang.number-dawg

? lang.freq-dawg

      在这八个文件中,红色标示的是必须的,其他的文件可选。当这些文件都准备好之后,再使用combine_tessdata进行最后的合并工作,生成lang.traineddata ,这个文件就是最终训练出来语言库。下面再来说一下如何产生上述的文件:

1、获取一个训练图片(*.tif)

2、产生相应的Box文件(*.box)

tesseract lang.fontname.number.tif lang.fontname.number batch.nochop makebox

       这一步产生对应的lang.fontname.number.box 文件。   

    编辑该Box文件,校正识别出来的字符,如果单个字符识别成了两个或者多个字符,则要将这些行进行合并。前两项坐标取最小值,后两项坐标取最大值。

3、产生字符特征文件(*.tr)

tesseract lang.fontname.number.tif lang.fontname.number nobatch box.train

这一步产生三个文件:

(1) tesseract.log记录该步骤执行结果;

(2) lang.fontname.number.txt

(3) lang.fontname.number.tr为特征文件。

4、计算字符集(unicharset)

unicharset_extractor lang.fontname.number_1.box

这一步产生字符集文件unicharset

5、聚集字符特征(inttemp、pffmtable、normproto)

mftraining -U unicharset -O lang.unicharset lang.fontname.number_1.tr

使用上一步产生的字符集文件unicharset,来生成当前新语言的字符集文件lang.unicharset。同时还会产生图形原型文件inttemp和每个字符所对应的字符特征数文件pffmtable。附带还会产生Microfeat文件,但是并没有用到该文件。

cntraining lang.fontname.number_1.tr

这一步产生字符形状正常化特征文件normproto

6、产生字典文件(可选)

wordlist2dawg frequent_words_list lang.freq-dawg lang.unicharset

wordlist2dawg words_list lang.word-dawg lang.unicharset

frequent_words_list存放出现频率较高的字符;words_list存放所有字符集,至少一个字符。每个字符占一行。这样可以产生对应语言的字典文件了,共五个。

同样的方法产生punc-dawg文件(符号)、number-dawg文件(数字)以及user-words文件(用户自定义字符,通常为空)。

7、模糊字集校正文件(unicharambigs)(可选)

例如某unicharambigs文件内容如下:

2 ' ' 1 " 1

1 m 2 r n 0

3 i i i 1 m 0

每一行表示一条校正信息:第一个数字表示接下来有几个字符,第二个数字也表示后面跟有几个字符,最后一个数字表示校正动作的类型。

在这个例子中,第一行表示将连续的两个单引号()合并成一个双引号(),最后的数字1表示强制转换;第二行、第三行表示一个字母m有可能被识别成两个字母’r’’n’,也有可能识别成连续三个字母’i’

这个校正文件可以为空或者不存在。

8、合并训练文件(*.traineddata)

combine_tessdata lang.

这是最后一步,产生训练结果文件lang.traineddata

注意这一步控制台执行的结果显示,有0-9项指示了文件的地址,这十个地址对应了文章前面所提到的十项所需要的文件。其中1345这四项(从0开始排序)是必须的,缺少一项(显示为-1)都将不算成功。

9、测试

tesseract image.tif output -l lang

使用我们刚刚训练好的lang.traineddata文件来识别图形。识别出来的结果将会存放在output.txt文件中。

特别说明:

在训练的过程中,初次接触的人容易犯一些小错误,这些错误虽然小,但很可能让你陷入困惑和痛苦中。下面简单的罗列一下几点需要注意的地方:

(1)前面提到的lang可以被你想要的任何字符串代替,主要是为了给你训练的库取个名字。

(2)第二步产生的Box文件,需要手动修改,一定要以Unicode模式保存。修改的时候要注意方法和含义,详细的说明Google原文中有说明。

(3)第五步程序自动产生的文件是只有扩展名的,需要你自己手动将名字改成前缀一致。后面产生的可选文件也依照此法操作。

(4)所有的这些文件都准备好了之后,需要放到同一目录下,执行combine_tessdata进行合并的时候,注意要切换到文件所在的目录执行,否则将会报错,提示找不到文件。

(5)合并成功之后,要记得将训练好的文件(lang.traineddata)放到程序的tessdata子目录下,否则测试就会提示找不到语言库文件。

    好了,到这里,基本上所有的问题都能解决了。


### Tesseract-OCR 字体库训练工具使用教程 Tesseract 是一款开源的 OCR 工具,能够识别多种语言的文字并将其转换为可编辑的文本。为了提高特定场景下的识别精度,通常需要对 Tesseract 进行自定义字体库的训练。 #### 准备工作 在开始训练之前,需确保已安装 Tesseract 的最新版本以及必要的依赖项。根据提供的信息,建议使用的最低版本为 3.0 或更高版本[^1]。此外,还需要准备以下工具和资源: - **Leptonica 库**:用于图像处理的支持库。 - **FontForge**:一种矢量图形编辑器,可用于创建或修改字体文件。 - **Jupyter Notebook**(可选):方便运行 Python 脚本来辅助训练过程。 #### 训练流程概述 以下是基于官方文档和其他资料整理出的一个典型训练流程: 1. **收集样本数据** 收集一组高质量的目标字体图片作为输入素材。这些图片应覆盖目标字符集中可能出现的所有字符,并保持清晰度一致。 2. **生成 Box 文件** 利用 `tesseract` 命令行工具生成 box 文件,该文件记录了每张图片中的字符位置及其对应标签。 ```bash tesseract eng.font.exp0.tif eng.font.exp0 batch.nochop makebox ``` 3. **校正 Box 文件** 手动检查并修正生成的 box 文件内容,确保标注无误。这一步骤对于提升后续模型准确性至关重要。 4. **制作 TrainedData 文件** 将经过验证的数据提交给 Tesseract 处理程序来构建新的 traineddata 文件。 ```bash unicharset_extractor *.box shapeclustering -F font_properties -O output_dir lang.font.exp[num].tr mftraining -F font_properties -U unicharset -O lang.unicharset lang.font.exp[num].tr cntraining lang.font.exp[num].tr # 合并生成的结果文件至单一traineddata包内 combine_tessdata lzmtrain. ``` 5. **测试新字库** 把刚完成定制化的 `.traineddata` 文件放置于指定目录下替换默认配置即可启用新设置进行实际应用测试[^2]。 6. **优化迭代** 如果初次尝试未能达到预期效果,则应回顾整个操作环节寻找改进空间;比如增加更多样式的训练样本或者调整参数设定等等直至满足需求为止[^3]。 #### 注意事项 - 整个过程中涉及到较多命令行指令执行,请严格按照说明顺序逐步推进以免遗漏重要步骤影响最终质量。 - 对于初学者而言可能显得复杂繁琐,但随着实践积累会逐渐熟悉掌握其中规律技巧变得轻松自如起来。 ```python import pytesseract from PIL import Image # Example of using custom-trained data with PyTesseract in Python pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' custom_config = '--oem 3 --psm 6 -l chi_sim+lzmtrain' text = pytesseract.image_to_string(Image.open('test.png'), config=custom_config) print(text) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值