如何使用 Tesseract 5 在 C# 中进行自定义字体训练

面向 Windows 开发人员的 Tesseract 5 C# 自定义字体培训

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

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

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

快速入门:在 C# 中使用您的 .traineddata 字体文件

只需几行代码,即可在 IronOCR 中使用您自定义训练的 Tesseract 字体文件。 非常适合快速准确地识别特殊字体或装饰字体的OCR数据。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronOCR

    PM > Install-Package IronOcr

  2. 复制并运行这段代码。

    var ocr = new IronOcr.IronTesseract();
    ocr.UseCustomTesseractLanguageFile("path/to/YourCustomFont.traineddata");
    string text = ocr.Read(new IronOcr.OcrInput("image-with-special-font.png")).Text;
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronOCR,免费试用!
    arrow pointer

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

通过 DLL 安装

直接将IronOCR DLL下载到您的计算机。

通过 NuGet 安装

或者,您也可以使用以下命令通过NuGet安装:

Install-Package IronOcr

步骤 2:安装和设置 WSL2 和 Ubuntu

请参阅关于设置 WSL2 和 Ubuntu 的教程。

请注意目前自定义字体训练只能在Linux系统上进行。

步骤 3:在 Ubuntu 上安装 Tesseract 5

使用以下命令安装 Tesseract 5:

sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
SHELL

第四步:下载您想要训练的字体

本教程中使用的是 AMGDT 字体。 字体文件可以是 .ttf 或 .otf 格式。 !下载的字体文件示例

步骤 5:挂载工作空间的磁盘驱动器以进行自定义字体训练

使用以下命令将D:盘挂载为工作空间。

cd /
cd /mnt/d
cd /
cd /mnt/d
SHELL

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

将字体文件复制到以下 Ubuntu 目录: /usr/share/fonts/usr/local/share/fonts

在 Ubuntu 系统中,可以通过在文件资源管理器的地址栏中输入\\wsl$来访问文件。

Ubuntu 文件夹目录

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

如果遇到访问被拒绝错误,请使用命令行复制文件来解决此问题。

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
exit
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
exit
SHELL

步骤 7:从 GitHub 克隆tesseract_tutorial

使用以下命令克隆tesseract_tutorial代码库:

git clone https://github.com/astutejoe/tesseract_tutorial.git
git clone https://github.com/astutejoe/tesseract_tutorial.git
SHELL

步骤 8:从 GitHub 克隆tesstraintesseract

导航至tesseract_tutorial目录,然后克隆tesstraintesseract代码库:

git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
SHELL
  • tesstrain包含用于创建.traineddata文件的"Makefile"。
  • tesseract包含"tessdata"文件夹,其中包含用于自定义字体训练期间参考的原始.traindata文件。

步骤 9:创建一个名为"data"的文件夹,用于存储输出结果

tesseract_tutorial/tesstrain下创建一个名为"data"的文件夹。

步骤 10:运行split_training_text.py

返回tesseract_tutorial文件夹并执行以下命令:

python split_training_text.py
python split_training_text.py
SHELL

运行split_training_text.py后,它将在"data"文件夹中创建.box.tif文件。

故障排除:字体配置警告

字体配置警告 如果您看到警告Fontconfig warning: "/tmp/fonts.conf, line 4: empty font directory name ignored" ,则表示缺少字体目录。 解决此问题的方法是对tesseract_tutorial/fonts.conf文件进行编辑,并添加以下内容:

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

使用以下命令将其复制到/etc/fonts

cp fonts.conf /etc/fonts
cp fonts.conf /etc/fonts
SHELL

此外,更新split_training_text.py

fontconf_dir = '/etc/fonts'
fontconf_dir = '/etc/fonts'
PYTHON

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

当前训练文件数量设置为 100。您可以在split_training_text.py中修改此值。

设置训练文件数量

步骤 11:下载eng.traineddata

从该存储库下载eng.traineddata并将其放置在tesseract_tutorial/tesseract/tessdata中。

步骤 12:创建自定义字体.traineddata

导航至tesstrain文件夹,并在 WSL2 中使用以下命令:

TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
SHELL
  • MODEL_NAME是您的自定义字体名称。
  • START_MODEL是原始的.traineddata引用。
  • MAX_ITERATIONS定义迭代次数(更多迭代可以提高.traineddata的准确性)。

故障排除:Makefile 中的"读取数据失败"错误

要解决"读取数据失败"的问题,请修改 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文件夹。 Latin.unicharset可以在这里找到。

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

使用 1000 个.box.tif文件以及 3000 次训练迭代,输出的.traineddata (AMGDT.traineddata) 实现了约 5.77 的最小训练错误率 (BCER)。

训练数据准确率

如需进一步阅读和参考,请观看教程: YouTube 视频

常见问题解答

如何为 C# 中的 Tesseract 训练一个自定义字体?

要使用 C# 为 Tesseract 训练自定义字体,您必须先下载 IronOCR,准备字体文件,并通过 WSL2 和 Windows 上的 Ubuntu 设置 Linux 环境,因为 Tesseract 的自定义字体训练仅在 Linux 上支持。

在 Windows 系统上使用 WSL2 安装 Tesseract 5 的步骤是什么?

要在 Windows 上使用 WSL2 安装 Tesseract 5,您需要设置 Ubuntu,然后使用命令 sudo apt install tesseract-ocrsudo apt install libtesseract-dev 完成安装。

复制字体文件时,我应该怎么办如果遇到“目标文件夹访问被拒绝”的错误?

如果遇到“目标文件夹访问被拒绝”的错误,请使用根访问权限的命令行将字体文件复制到必要的目录中以绕过权限问题。

为什么在 Tesseract 中进行自定义字体训练需要一个 Linux 环境?

在 Tesseract 中进行自定义字体训练需要一个 Linux 环境,因为训练工具被设计成在类似 Unix 的系统上运行,WSL2 可以用来在 Windows 上模拟这种环境。

如何在训练自定义字体时修复“Fontconfig 警告”错误?

为了解决“Fontconfig 警告”错误,您应该将字体目录路径添加到 fonts.conf 文件中,并确保它被复制到 /etc/fonts 目录中。

在自定义字体训练中“tesstrain”存储库的目的是什么?

'tesstrain' 存储库用于创建 Tesseract 自定义字体训练所需的 .traineddata 文件,提供过程所需的脚本和 Makefile。

如何解决“无法加载脚本 Unicharset”错误?

要修复“无法加载脚本 Unicharset”错误,您需要将 Latin.unicharset 插入 tesstrain/data/langdata 文件夹中,以确保必要的字符集可用。

如何验证我在 Tesseract 中自定义训练数据的准确性?

您可以通过检查训练误差率(称为 BCER),并确保经过足够的迭代和训练文件调整后最小化误差率,以验证自定义训练数据的准确性。

Kannaopat Udonpant
软件工程师
在成为软件工程师之前,Kannapat 在日本北海道大学完成了环境资源博士学位。在攻读学位期间,Kannapat 还成为了车辆机器人实验室的成员,隶属于生物生产工程系。2022 年,他利用自己的 C# 技能加入 Iron Software 的工程团队,专注于 IronPDF。Kannapat 珍视他的工作,因为他可以直接从编写大多数 IronPDF 代码的开发者那里学习。除了同行学习外,Kannapat 还喜欢在 Iron Software 工作的社交方面。不撰写代码或文档时,Kannapat 通常可以在他的 PS5 上玩游戏或重温《最后生还者》。
审核者
Jeff Fritz
Jeffrey T. Fritz
首席项目经理 - .NET 社区团队
Jeff 也是 .NET 和 Visual Studio 团队的首席项目经理。他是 .NET Conf 虚拟会议系列的执行制片人,并主持“Fritz and Friends”直播节目,每周两次与观众一起谈论技术并编写代码。Jeff 撰写研讨会、演示文稿并计划包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP 峰会在内的最大型微软开发者活动的内容。
准备开始了吗?
Nuget 下载 5,167,857 | Version: 2025.11 刚刚发布