针对 Tesseract 5 的 C# 自定义字体培训(适用于 Windows 用户)
使用Tesseract 5自定义字体训练来提高OCR引擎在处理可能默认不支持的特定字体或字体样式时的准确性和识别能力。
该过程包括为Tesseract提供训练数据,比如字体样本和相应的文本,以便它能学习自定义字体的特定特性和模式。
开始使用IronOCR
立即在您的项目中开始使用IronOCR,并享受免费试用。
如何在 C# 中使用 Tesseract 自定义字体
- 下载用 Tesseract 训练自定义字体的 C# 库
- 准备用于培训的目标字体文件
- 按照文章中规定的步骤操作
- 包含常见错误的解决方案
- 导出训练好的数据文件,以便进一步使用
步骤1:下载最新版本的IronOCR
通过 DLL 安装
下载 IronOcr DLL 直接连接到您的机器。
通过 NuGet 安装
或者,您也可以通过 NuGet .
Install-Package IronOcr
步骤2:安装并设置WSL2和Ubuntu
这里这是设置WSL2和Ubuntu的教程。
**目前,自定义字体训练只能在Linux上进行
步骤 3:在 Ubuntu 上安装魔方 5
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
步骤 4:下载您想要训练的字体
我们在本教程中使用AMGDT字体。 字体文件可以是.ttf或.otf格式。
步骤5:为自定义字体训练挂载工作区的磁盘驱动器
以下命令展示了如何将驱动器D:
挂载为工作空间。
cd /
cd /mnt/d
步骤6:将字体文件复制到Ubuntu字体文件夹
这是Ubuntu字体文件夹目录; Ubuntu/usr/share/fonts
和 Ubuntu/usr/local/share/fonts
。
要在Ubuntu上访问文件,请在文件资源管理器目录中输入\\\wsl$
。
故障排除:目标文件夹访问被拒绝
此问题可以通过使用命令行复制文件来解决。
cd /
su root
cd c/Users/Admin/Downloads/’AMGDT Regular’
cp ‘AMGDT Regular.ttf’ /usr/share/fonts
cp ‘AMGDT Regular.ttf’ /usr/local/share/fonts
su username
步骤7:从Github克隆tesseract_tutorial
tesseract_tutorial
仓库可以从以下网址克隆; https://github.com/astutejoe/tesseract_tutorial.git使用以下命令;
git clone https://github.com/astutejoe/tesseract_tutorial.git
步骤8:从Github克隆tesstrain和tesseract
进入tesseract_tutorial
文件夹目录,然后使用git克隆https://github.com/tesseract-ocr/tesstrain 和 https://github.com/tesseract-ocr/tesseract
- tesstrain包含一个“Makefile”文件,用于创建.traineddata文件。(本教程的目的)
- tesseract包含一个名为“tessdata”的文件夹,该文件夹是使用.traindata文件作为自定义字体训练的参考容器。
步骤 9:创建“data”文件夹以存储输出内容
“data”应该在tesseract_tutorial/tesstrain
中创建。
步骤 10:运行 split_training_text.py
返回到 tesseract_tutorial
文件夹目录,然后编译以下命令;
python split_training_text.py
运行split_training_text.py
后,将在 "data "文件夹中创建.box
和.tif
文件。
故障排除:Fontconfig 警告:“/tmp/fonts.conf,第4行:忽略了空的字体目录名”
此问题是由于在 Ubuntu 文件夹中找不到字体目录所导致的,可以通过在 tesseract_tutorial/fonts.conf
中插入以下代码行来解决此问题
和
<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">字体</dir>
<!-- 今后将删除以下元素 -->
<dir>~/.fonts</dir>
然后将其复制到/etc/fonts
cp fonts.conf /etc/fonts
最后,将以下代码行添加到 split_training_text.py
中。
和
fontconf_dir = '/etc/fonts'
注意:训练文件(.box 和 .tif)的数量
目前训练文件的数量为100。在split_training_text.py中,可以编辑或删除这些代码行来调整训练文件的数量。
步骤11:下载 eng.traineddata
eng.traineddata
可以在以下网址找到:https://github.com/tesseract-ocr/tessdata_best. 将其下载到tesseract_tutorial/tesseract/tessdata
中,因为tessdata_best
中的eng.traineddata
比tessdata
文件夹中的原始文件更好。
步骤12:创建你的自定义字体.traineddata
进入 tesstrain
文件夹目录,并在 WSL2 中输入此命令行。
TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
- 在
tesstrain/Makefile
中运行代码以进行训练 - MODEL_NAME = 您自定义字体的名称
- START_MODEL = 原始的
.traineddata
名称 MAX_ITERATIONS = 迭代次数(较大的数字意味着
.traineddata
的准确性更高。
“无法从以下位置读取数据:”可以通过编辑Makefile中的代码行来解决。
之前:
After:
和
make - Makefile
WORDLIST_FILE := $(OUTPUT_DIR2)/$(型号名称).lstm-word-dawg
NUMBERS_FILE := $(OUTPUT_DIR2)/$(型号名称).lstm-number-dawg
PUNC_FILE := $(OUTPUT_DIR2)/$(型号名称).lstm-punc-dawg
“无法从data/langdata/Latin.unicharset加载脚本unicharset”的问题可以通过将Latin.unicharset
插入到tesstrain/data/langdata
文件夹中解决。
Latin.unicharset
可以在以下网址找到; https://github.com/tesseract-ocr/langdata_lstm
步骤13:创建的.traineddata
的准确性
在1000个.box
和.tif
文件和3000次训练迭代后,输出.traineddta
文件。(AMGDT.traineddata)具有最小的训练错误率(BCER)around 5.77
有关更多阅读和进一步参考资料:参考:https://www.youtube.com/watch?v=KE4xEzFGSU8ustom