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

This article was translated from English: Does it need improvement?
Translated
View the article in English

坎纳帕特-乌多姆潘

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

这一过程包括向 Tesseract 提供训练数据,如字体样本和相应文本,以便其学习自定义字体的特定特征和模式。


步骤 1:下载最新版本的 IronOCR

适用于OCR的C# NuGet库

安装使用 NuGet

Install-Package IronOcr
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于OCR的C# NuGet库

安装使用 NuGet

Install-Package IronOcr
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

开始在您的项目中使用IronPDF,并立即获取免费试用。

第一步:
green arrow pointer

查看 IronOCRNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变OCR。

适用于OCR的C# NuGet库 nuget.org/packages/IronOcr/
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/fontsUbuntu/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/tesstrainhttps://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.traineddatatessdata` 文件夹中的原始数据更好。

第 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文件夹来解决。

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

使用 1000 个.box.tif文件和 3000 次迭代训练,输出.traineddta结果如下 (AMGDT.traineddata) 具有最小的训练错误率 (BCER) 约 5.77

更多阅读和参考资料: ref: https://www.youtube.com/watch?v=KE4xEzFGSU8ustom

坎那帕·乌东攀

软件工程师

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