针对 Tesseract 5 的 C# 自定义字体培训(适用于 Windows 用户)
利用 Tesseract 5 的自定义字体训练功能,在处理默认情况下可能不支持的特定字体或字体样式时,提高 OCR 引擎的准确性和识别能力。
这一过程包括向 Tesseract 提供训练数据,如字体样本和相应文本,以便其学习自定义字体的特定特征和模式。
如何在 C# 中使用 Tesseract 自定义字体
- 下载用 Tesseract 训练自定义字体的 C# 库
- 准备用于培训的目标字体文件
- 按照文章中规定的步骤操作
- 包含常见错误的解决方案
- 导出训练好的数据文件,以便进一步使用
步骤 1:下载最新版本的 IronOCR
开始在您的项目中使用IronPDF,并立即获取免费试用。
查看 IronOCR 上 Nuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变OCR。
Install-Package IronOcr
考虑安装 IronOCR DLL 直接。下载并手动安装到您的项目或GAC表单中: IronOcr.zip
手动安装到你的项目中
下载DLL通过 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 clone https://github.com/tesseract-ocr/tesstrain 和 https://github.com/tesseract-ocr/tesseract
- tesstrain 包含 "Makefile "文件,用于创建 .traineddata 文件 (本教程的目的)
- tesseract 包含 "tessdata "文件夹,它是原始 .traindata 文件的容器,用作自定义字体训练的参考
第 9 步:创建 "数据 "文件夹,用于存储输出结果
应在 tesseract_tutorial/tesstrain
中创建 "data "文件夹。
第 10 步:运行 split_training_text.py
返回到 tesseract_tutorial
文件夹目录,然后编译以下命令;
python split_training_text.py
运行split_training_text.py
后,将在 "data "文件夹中创建.box
和.tif
文件。
疑难解答:Fontconfig warning:"/tmp/fonts.conf,第 4 行:忽略空字体目录名
这个问题是由于找不到 Ubuntu 文件夹中的字体目录造成的,在tesseract_tutorial/fonts.conf
中插入这几行代码即可解决。
和
<dir>/usr/share/字体</dir>
<dir>/usr/local/share/字体</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](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
的精度越高
"Failed to read data from: " 可以通过编辑 Makefile 中的代码行来解决
之前:
之后
和
make - Makefile
wordlist_file := $(OUTPUT_DIR2)/$(型号名称).lstm-word-dawg
numbers_file := $(OUTPUT_DIR2)/$(型号名称).lstm-number-dawg
PUNC_FILE := $(OUTPUT_DIR2)/$(型号名称).lstm-punc-dawg
"Failed to load script unicharset from:data/langdata/Latin.unicharset" 可以通过将Latin.unicharset
插入tesstrain/data/langdata
文件夹来解决。
- Latin.unicarset "可以在以下网址找到:https://github.com/tesseract-ocr/langdata_lstm
第 13 步:创建的 .traineddata
的准确性
使用 1000 个.box
和.tif
文件和 3000 次迭代训练,输出.traineddta
结果如下 (AMGDT.traineddata) 具有最小的训练错误率 (BCER) 约 5.77
更多阅读和参考资料: ref: https://www.youtube.com/watch?v=KE4xEzFGSU8ustom