适用于 Tesseract 5 的 C# 自定义字体训练(适用于 Windows 用户)

Kannapat related to 适用于 Tesseract 5 的 C# 自定义字体训练(适用于 Windows 用户)
坎那帕·乌东攀
2023年三月5日
更新 2024年十二月10日
分享:
This article was translated from English: Does it need improvement?
Translated
View the article in English

使用Tesseract 5自定义字体训练来提高OCR引擎在处理可能默认不支持的特定字体或字体样式时的准确性和识别能力。

该过程包括为Tesseract提供训练数据,比如字体样本和相应的文本,以便它能学习自定义字体的特定特性和模式。

开始使用IronOCR

立即在您的项目中开始使用IronOCR,并享受免费试用。

第一步:
green arrow pointer



步骤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格式。

Example Of Downloaded Font File related to 步骤 4:下载您想要训练的字体

步骤5:为自定义字体训练挂载工作区的磁盘驱动器

以下命令说明如何将驱动器D:挂载为工作空间。

cd /
cd /mnt/d

步骤6:将字体文件复制到Ubuntu字体文件夹

这是Ubuntu字体文件夹目录; Ubuntu/usr/share/fontsUbuntu/usr/local/share/fonts

** 要在 Ubuntu 上访问文件,请在文件资源管理器目录中键入 \\\wsl$

Ubutu Folder Directory related to 步骤6:将字体文件复制到Ubuntu字体文件夹

故障排除:目标文件夹访问被拒绝

Destination Folder Access Denied related to 故障排除:目标文件夹访问被拒绝

此问题可以通过使用命令行复制文件来解决。

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/tesstrainhttps://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行:忽略了空的字体目录名”

Fontconfig Warning related to 故障排除:Fontconfig 警告:“/tmp/fonts.conf,第4行:忽略了空的字体目...

这个问题是由于在 Ubuntu 文件夹中找不到字体目录所引起的,可以通过在tesseract_tutorial/fonts.conf文件中插入这些代码行来解决。

Fontconfig Dir Png related to 故障排除:Fontconfig 警告:“/tmp/fonts.conf,第4行:忽略了空的字体目...

<dir>/usr/share/字体</dir>
<dir>/usr/local/share/字体</dir>
<dir prefix="xdg">字体</dir>
<!-- the following element will be removed in the future -->
<dir>~/.字体</dir>

然后将其复制到/etc/fonts

cp fonts.conf /etc/fonts

最后,将这些代码行添加到split_training_text.py

Fontconfig Sol related to 故障排除:Fontconfig 警告:“/tmp/fonts.conf,第4行:忽略了空的字体目录名”


fontconf_dir = '/etc/fonts'

注意:训练文件(.box 和 .tif)的数量

目前训练文件的数量为100。在split_training_text.py中,可以编辑或删除这些代码行来调整训练文件的数量。

Number Of Trainfile related to 注意:训练文件(.box 和 .tif)的数量

步骤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 Issues related to 步骤12:创建你的自定义字体.traineddata

“无法从以下位置读取数据:”可以通过编辑Makefile中的代码行来解决。

之前:

Makefile Sol Before related to “无法从以下位置读取数据:”可以通过编辑Makefile中的代码行来解...

After:

Makefile Sol After related to “无法从以下位置读取数据:”可以通过编辑Makefile中的代码行来解决。


make - Makefile

WORDLIST_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-word-dawg

NUMBERS_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-number-dawg

PUNC_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-punc-dawg

通过将Latin.unicharset插入到tesstrain/data/langdata文件夹,可以解决“Failed to load script unicharset from:data/langdata/Latin.unicharset”问题。

步骤13:创建的.traineddata的准确性

通过使用1000个.box.tif文件以及3000次训练迭代,输出.traineddta(AMGDT.traineddata)具有大约5.77的最低训练错误率(BCER)。

Traineddata Accuracy related to 步骤13:创建的.traineddata的准确性

欲了解更多阅读和进一步参考:参考https://www.youtube.com/watch?v=KE4xEzFGSU8ustom

Kannapat related to 步骤13:创建的.traineddata的准确性
坎那帕·乌东攀
软件工程师
在成为软件工程师之前,Kannapat 从日本北海道大学完成了环境资源博士学位。在攻读学位期间,Kannapat 还成为了生物生产工程系车辆机器人实验室的成员。2022年,他利用自己的 C# 技能加入了 Iron Software 的工程团队,专注于 IronPDF。Kannapat 珍视他的工作,因为他能直接向编写 IronPDF 大部分代码的开发者学习。除了同伴学习,Kannapat 还享受在 Iron Software 工作的社交方面。不写代码或文档时,Kannapat 通常在 PS5 上玩游戏或重看《最后生还者》。