如何在C#中使用Tesseract 5训练自定义字体 Copy for LLMsCopy for LLMs Copy page as Markdown for LLMs
# 如何在C#中使用Tesseract 5训练自定义字体
默认的Tesseract英文模型对许多实际输入有误读:医院手写入院表单、古籍数字化、游戏制作公司的特制装饰字体或通用OCR引擎从未见过的行业特定符号。 解决办法是自行训练Tesseract以识别确切字体,生成一个`.traineddata`构件,可以在IronOCR运行的任何地方使用。
本指南全面介绍了在C#中从头到尾训练Tesseract 5自定义字体的过程:安装WSL2 Ubuntu工具链,从您的`.traineddata`模型,然后在IronOCR中加载结果。 训练完成后,文件在Windows, macOS, Linux和Docker之间均可移植。
*as-heading:2(快速开始:在C#中使用训练好的字体文件)*
通过将`Read`来处理任意图像。
```cs
:title=Quickly Load Your Custom Trained Font with IronOCR
using IronOcr;
var ocr = new IronTesseract();
ocr.UseCustomTesseractLanguageFile("path/to/YourCustomFont.traineddata");
string text = ocr.Read(new OcrInput("image-with-special-font.png")).Text;
```
<div class="hsg-featured-snippet">
<h3>最小工作流程(5 个步骤)</h3>
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronOcr/">通过NuGet下载IronOCR以使用自定义训练字体进行读取</a></li>
<li>在WSL2 Ubuntu上安装Tesseract 5并克隆<code>tesstrain</code>训练库</li>
<li>使用<code>split_training_text.py</code>为目标字体生成训练文件</li>
<li>使用<code>tesstrain</code>结合基础语言模型构建您的自定义<code>.traineddata</code>文件</li>
<li>在IronOCR中使用<code>UseCustomTesseractLanguageFile</code>加载训练文件并调用<code>Read</code></li>
</ol>
</div>
## 我该如何设置训练环境?
### 如何安装IronOCR?
通过[NuGet](https://www.nuget.org/packages/IronOcr/)安装IronOCR:
```shell
:ProductInstall
```
[DLL包](/csharp/ocr/packages/IronOcr.zip)如果您无法使用NuGet,则是一个手动替代方案。 有关底层引擎,请参阅[Tesseract 5功能指南](https://ironsoftware.com/csharp/ocr/tutorials/c-sharp-tesseract-ocr/)和[自定义语言参考](https://ironsoftware.com/csharp/ocr/examples/ocr-tesseract-custom-languages/)。
### 如何安装和设置WSL2与Ubuntu?
请参阅关于[设置 WSL2 和 Ubuntu 的](https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-10)教程。
[[i:(定制字体训练需要 Linux。)]]
足够的WSL2:一旦训练完成,生成的`.traineddata`文件即可与您的IronOCR应用一起在Windows、macOS、Linux或Docker上进行部署。 有关部署详细信息,请参阅[Linux部署指南](https://ironsoftware.com/csharp/ocr/get-started/linux/)。
### 如何在Ubuntu上安装Tesseract 5?
使用这些命令安装 Tesseract 5:
```bash
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
```
`tesseract-ocr`包是运行识别的引擎; `libtesseract-dev`公开tesstrain需要的头文件以构建模型。 一旦使用了您的训练文件,[Tesseract配置指南](https://ironsoftware.com/csharp/ocr/examples/csharp-configure-setup-tesseract/)中涵盖了运行时调优。
## 我该如何准备用于训练的字体?
### 我应该下载哪个字体?
本教程使用AMGDT字体,格式可以是`.otf`。

选择要训练的字体时:
- 选择默认的英文模型已经误读的字体。 训练一种已经被识别的字体是浪费时间。
- 确认字体的许可证允许重新分发,如果您的`.traineddata`与应用程序一起分发。
- 装饰性字体、手写字体和特定行业字体(医疗、法律、制图)通过训练可以大幅提高准确度。
- 确保训练样本与实际生产所见的匹配,包括分辨率和光照。
### 我该如何挂载磁盘驱动器?
将D驱动器挂载为您的工作空间:
```bash
cd /
cd /mnt/d
```
WSL2将每个Windows驱动器挂载在/mnt/<letter>下,您可以在Windows上编辑文件,并在同一会话中对其运行训练命令。
### 我该如何将字体文件复制到Ubuntu字体文件夹?
Tesseract通过在您的字体中生成样本文本来构建训练图像,因此该字体需要安装在Linux端,而不仅仅是在Windows上。 将字体文件复制到两个Ubuntu字体目录:/usr/share/fonts和/usr/local/share/fonts。 最简单的方法是在文件资源管理器的地址栏中键入\wsl$,以便从Windows浏览Ubuntu文件系统,然后将`.ttf`拖过来。

这是字体复制到Ubuntu字体目录后的样子:
<img src="/static-assets/ocr/how-to/ocr-custom-font-training/amdfont.gif" alt="AMGDT 字体文件被复制到 Ubuntu 字体文件夹并被系统识别" class="img-responsive add-shadow" style="max-width: 720px; width: 100%; display: block; margin: 0 auto 30px auto;"/>
#### 如果我获得了目标文件夹访问被拒的错误怎么办?
如果文件资源管理器拒绝复制,请改用root shell运行:
```bash
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
```
## 我该如何克隆GitHub中的训练库?
训练管道依赖于三个库。 首先克隆教程包装器,接着在里面克隆两个上游的Tesseract库,然后创建输出文件夹:
```bash
git clone https://github.com/astutejoe/tesseract_tutorial.git
cd tesseract_tutorial
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
mkdir tesstrain/data
```
- Tesseract_tutorial打包了驱动每个训练步骤的Python脚本和配置文件(文本生成、图像渲染、训练对创建)。
- tesstrain包含驱动实际训练运行的Makefile。
- Tesseract包含一个tessdata文件夹,其中包含用作自定义训练起始模型的库存`.traineddata`文件。
- tesstrain/data是保存生成的`.tif`图像和中间LSTM检查点的地方。
这是终端中克隆序列的样子:
<img src="/static-assets/ocr/how-to/ocr-custom-font-training/gitlogs.gif" alt="终端运行四条 git clone 命令并创建 tesstrain data 文件夹" class="img-responsive add-shadow" style="max-width: 720px; width: 100%; display: block; margin: 0 auto 30px auto;"/>
要并行使用多个语言包和自定义语言包,请参阅我们的[国际语言指南](https://ironsoftware.com/csharp/ocr/examples/intl-languages/)。
## 我该如何生成训练文件?
### 我该如何运行split_training_text.py脚本?
从Tesseract_tutorial文件夹运行:
```shell
python split_training_text.py
```
脚本为每个训练样本生成一对`.box` / `.tif`,并将其写入数据文件夹。
这就是脚本运行生成训练对时的样子:
<img src="/static-assets/ocr/how-to/ocr-custom-font-training/pythontest.gif" alt="终端运行 split_training_text.py 并在 data 文件夹中生成 .box 和 .tif 文件" class="img-responsive add-shadow" style="max-width: 720px; width: 100%; display: block; margin: 0 auto 30px auto;"/>
#### 我该如何修复Fontconfig警告?

如果您看到警告*Fontconfig warning: " /tmp/fonts.co/nf, line 4: empty font directory name ignored"*,fontconfig无法解析字体目录。 通过编辑`tesseract_tutorial/fonts.co/nf`来修复此问题:
```xml
<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>
```
将其复制到/etc/fonts:
```bash
cp fonts.co/nf /etc/fonts
```
然后将`split_training_text.py`指向相同的路径:
```python
fontconf_dir = '/etc/fonts'
```
#### 我应该生成多少训练文件?
脚本默认生成100对训练对。 在`split_training_text.py`的顶部附近更改计数:

尺寸指导:
- 100-500个样本足以确认管道可以端到端工作。
- 1000-5000个样本是生产准确性的工作范围。
- 训练文本必须涵盖您的字体需要识别的每个字符,理想情况下每个字符多次。
- 更多样本意味着更长的训练时间;选择达到您的准确性目标的最小计数。
### 我在哪里下载eng.traineddata文件?
从[tessdata_best仓库](https://github.com/tesseract-ocr/tessdata_best)下载`eng.traineddata`并将其放置在Tesseract_tutorial/tesseract/tessdata中。
基础模型为训练者提供语言背景(哪些字符序列形成合理的词),所以准确性比从头训练要好得多。 选择与您的训练文本相同语言的基础模型。 如果遇到问题,请参阅[自定义OCR语言包疑难解答指南](https://ironsoftware.com/csharp/ocr/troubleshooting/custom-ocr-language-packs/)。
## 我如何构建我的自定义字体训练数据文件?
从tesstrain文件夹运行:
```bash
TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
```
- MODEL_NAME是您的自定义字体的名称(用于输出文件名)。
- START_MODEL是您以上下载的基础`.traineddata`。
- MAX_ITERATIONS限制训练运行; 较高的值通常会降低错误率。
### 如果在 Makefile 中遇到 "读取数据失败 "怎么办?
要解决"读取数据失败"错误,请修补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
```
补丁将Makefile指向实际输出目录,以便它可以找到词典文件。
### 如何修复 "加载脚本 Unicharset 失败"?
从[langdata_lstm](https://github.com/tesseract-ocr/langdata_lstm)下载`Latin.unicharset`并将其放在tesstrain/data/langdata文件夹中。
`.unicharset`文件定义了训练器被允许生成的字符。 使用包含字体中每个字符的文件,例如用于西里尔字母字体的`Devanagari.unicharset`。
这就是tesstrain生成`.traineddata`文件时,成功的训练运行应该的样子:
<img src="/static-assets/ocr/how-to/ocr-custom-font-training/trainingdatagen.gif" alt="tesstrain 构建管道运行多轮训练迭代并输出 AMGDT.traineddata 文件" class="img-responsive add-shadow" style="max-width: 720px; width: 100%; display: block; margin: 0 auto 30px auto;"/>
## 我如何验证我的训练数据文件的准确性?
通过1000个`AMGDT.traineddata`显示训练误差率(BCER)约为5.77%。

要使用IronOCR测试训练好的模型,请将`UseCustomTesseractLanguageFile`指向文件并读取一个示例图像:
```cs
:path=/static-assets/ocr/content-code-examples/how-to/ocr-custom-font-training-13.cs
```
`Confidence`属性是每个文档的得分; 如果在干净的输入上仍然保持较低,最常见的原因是训练样本太少或基模型不匹配脚本。 一旦您的`.traineddata`验证完成,请查看我们的[自定义语言指南](https://ironsoftware.com/csharp/ocr/how-to/ocr-custom-language/)以获得加载任何自定义语言文件的通用工作流程。
## 自定义字体训练的关键要点是什么?
训练自定义字体是一次性设置:从目标字体生成`.box` / `UseCustomTesseractLanguageFile`加载。 从那里IronOCR读取具有新模型的图像,就像读取标准英语一样。
使用IronOCR与自定义Tesseract模型的关键优势:
- **重用标准Tesseract构件**:任何您能够用tesstrain构建的`.traineddata`文件都可以在IronOCR中直接使用,无需转换。
- **跨平台输出**:训练需要Linux(或WSL2),但训练文件随您的应用程序在Windows、macOS、Linux和Docker上运行。
- **与API的其余部分无缝集成**:将自定义字体与[多种辅助语言](https://ironsoftware.com/csharp/ocr/how-to/ocr-multiple-languages/),[图像质量校正](https://ironsoftware.com/csharp/ocr/how-to/image-quality-correction/)和[DPI调整](https://ironsoftware.com/csharp/ocr/how-to/dpi-setting/)结合使用,而不更改识别路径。
- **可调准确性**:错误率是训练样本数量乘以迭代次数的函数。 两个旋钮都被公开(脚本的示例计数加上`MAX_ITERATIONS`),因此您可以在不离开Tesseract的情况下调整训练时间和BCER之间的平衡。
对于更大的管道,请考虑在许多文档上应用训练模型时使用[进度跟踪](https://ironsoftware.com/csharp/ocr/how-to/progress-tracking/)和[异步处理](https://ironsoftware.com/csharp/ocr/how-to/async/)。
Ask ChatGPT about this page
Ask Gemini about this page
Ask Perplexity about this page
默认的Tesseract英文模型对许多实际输入有误读:医院手写入院表单、古籍数字化、游戏制作公司的特制装饰字体或通用OCR引擎从未见过的行业特定符号。 解决办法是自行训练Tesseract以识别确切字体,生成一个.traineddata构件,可以在IronOCR运行的任何地方使用。
本指南全面介绍了在C#中从头到尾训练Tesseract 5自定义字体的过程:安装WSL2 Ubuntu工具链,从您的.traineddata模型,然后在IronOCR中加载结果。 训练完成后,文件在Windows, macOS, Linux和Docker之间均可移植。
通过将Read来处理任意图像。
1 Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr
Install-Package IronOcr
2 复制并运行这段代码。
using IronOcr ;
var ocr = new IronTesseract ();
ocr. UseCustomTesseractLanguageFile ( "path/to/YourCustomFont.traineddata" );
string text = ocr. Read ( new OcrInput ( "image-with-special-font.png" )). Text ;
using IronOcr;
var ocr = new IronTesseract();
ocr.UseCustomTesseractLanguageFile("path/to/YourCustomFont.traineddata");
string text = ocr.Read(new OcrInput("image-with-special-font.png")).Text;
C#
3 部署到您的生产环境中进行测试
通过免费试用 立即在您的项目中开始使用IronOCR
免费试用30天
最小工作流程(5 个步骤) 通过NuGet下载IronOCR以使用自定义训练字体进行读取 在WSL2 Ubuntu上安装Tesseract 5并克隆tesstrain训练库 使用split_training_text.py为目标字体生成训练文件 使用tesstrain结合基础语言模型构建您的自定义.traineddata文件 在IronOCR中使用UseCustomTesseractLanguageFile加载训练文件并调用Read
我该如何设置训练环境?
如何安装IronOCR?
通过NuGet 安装IronOCR:
PM > Install-Package IronOcr
Install-Package IronOcr
DLL包 如果您无法使用NuGet,则是一个手动替代方案。 有关底层引擎,请参阅Tesseract 5功能指南 和自定义语言参考 。
如何安装和设置WSL2与Ubuntu?
请参阅关于设置 WSL2 和 Ubuntu 的 教程。
定制字体训练需要 Linux。
足够的WSL2:一旦训练完成,生成的.traineddata文件即可与您的IronOCR应用一起在Windows、macOS、Linux或Docker上进行部署。 有关部署详细信息,请参阅Linux部署指南 。
如何在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
tesseract-ocr包是运行识别的引擎; libtesseract-dev公开tesstrain需要的头文件以构建模型。 一旦使用了您的训练文件,Tesseract配置指南 中涵盖了运行时调优。
我该如何准备用于训练的字体?
我应该下载哪个字体?
本教程使用AMGDT字体,格式可以是.otf。
选择要训练的字体时:
选择默认的英文模型已经误读的字体。 训练一种已经被识别的字体是浪费时间。
确认字体的许可证允许重新分发,如果您的.traineddata与应用程序一起分发。
装饰性字体、手写字体和特定行业字体(医疗、法律、制图)通过训练可以大幅提高准确度。
确保训练样本与实际生产所见的匹配,包括分辨率和光照。
我该如何挂载磁盘驱动器?
将D驱动器挂载为您的工作空间:
cd /
cd /mnt/d
cd /
cd /mnt/d
SHELL
WSL2将每个Windows驱动器挂载在/mnt/<letter>下,您可以在Windows上编辑文件,并在同一会话中对其运行训练命令。
我该如何将字体文件复制到Ubuntu字体文件夹?
Tesseract通过在您的字体中生成样本文本来构建训练图像,因此该字体需要安装在Linux端,而不仅仅是在Windows上。 将字体文件复制到两个Ubuntu字体目录:/usr/share/fonts和/usr/local/share/fonts。 最简单的方法是在文件资源管理器的地址栏中键入\wsl$,以便从Windows浏览Ubuntu文件系统,然后将.ttf拖过来。
这是字体复制到Ubuntu字体目录后的样子:
如果我获得了目标文件夹访问被拒的错误怎么办?
如果文件资源管理器拒绝复制,请改用root shell运行:
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
我该如何克隆GitHub中的训练库?
训练管道依赖于三个库。 首先克隆教程包装器,接着在里面克隆两个上游的Tesseract库,然后创建输出文件夹:
git clone https://github.com/astutejoe/tesseract_tutorial.git
cd tesseract_tutorial
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
mkdir tesstrain/data
git clone https://github.com/astutejoe/tesseract_tutorial.git
cd tesseract_tutorial
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
mkdir tesstrain/data
SHELL
Tesseract_tutorial打包了驱动每个训练步骤的Python脚本和配置文件(文本生成、图像渲染、训练对创建)。
tesstrain包含驱动实际训练运行的Makefile。
Tesseract包含一个tessdata文件夹,其中包含用作自定义训练起始模型的库存.traineddata文件。
tesstrain/data是保存生成的.tif图像和中间LSTM检查点的地方。
这是终端中克隆序列的样子:
要并行使用多个语言包和自定义语言包,请参阅我们的国际语言指南 。
我该如何生成训练文件?
我该如何运行split_training_text.py脚本?
从Tesseract_tutorial文件夹运行:
python split_training_text.py
python split_training_text.py
SHELL
脚本为每个训练样本生成一对.box / .tif,并将其写入数据文件夹。
这就是脚本运行生成训练对时的样子:
我该如何修复Fontconfig警告?
如果您看到警告Fontconfig warning: " /tmp/fonts.co/nf, line 4: empty font directory name ignored" ,fontconfig无法解析字体目录。 通过编辑tesseract_tutorial/fonts.co/nf来修复此问题:
<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.co/nf /etc/fonts
cp fonts.co/nf /etc/fonts
SHELL
然后将split_training_text.py指向相同的路径:
fontconf_dir = '/etc/fonts'
fontconf_dir = '/etc/fonts'
Python
我应该生成多少训练文件?
脚本默认生成100对训练对。 在split_training_text.py的顶部附近更改计数:
尺寸指导:
100-500个样本足以确认管道可以端到端工作。
1000-5000个样本是生产准确性的工作范围。
训练文本必须涵盖您的字体需要识别的每个字符,理想情况下每个字符多次。
更多样本意味着更长的训练时间;选择达到您的准确性目标的最小计数。
我在哪里下载eng.traineddata文件?
从tessdata_best仓库 下载eng.traineddata并将其放置在Tesseract_tutorial/tesseract/tessdata中。
基础模型为训练者提供语言背景(哪些字符序列形成合理的词),所以准确性比从头训练要好得多。 选择与您的训练文本相同语言的基础模型。 如果遇到问题,请参阅自定义OCR语言包疑难解答指南 。
我如何构建我的自定义字体训练数据文件?
从tesstrain文件夹运行:
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限制训练运行; 较高的值通常会降低错误率。
如果在 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
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
Text
补丁将Makefile指向实际输出目录,以便它可以找到词典文件。
如何修复 "加载脚本 Unicharset 失败"?
从langdata_lstm 下载Latin.unicharset并将其放在tesstrain/data/langdata文件夹中。
.unicharset文件定义了训练器被允许生成的字符。 使用包含字体中每个字符的文件,例如用于西里尔字母字体的Devanagari.unicharset。
这就是tesstrain生成.traineddata文件时,成功的训练运行应该的样子:
我如何验证我的训练数据文件的准确性?
通过1000个AMGDT.traineddata显示训练误差率(BCER)约为5.77%。
要使用IronOCR测试训练好的模型,请将UseCustomTesseractLanguageFile指向文件并读取一个示例图像:
using IronOcr ;
// Load the trained model; AutoOsd handles orientation
var ocr = new IronTesseract ();
ocr. UseCustomTesseractLanguageFile ( "path/to/AMGDT.traineddata" );
ocr. Configuration . PageSegmentationMode = TesseractPageSegmentationMode . AutoOsd ;
// Preprocess so the model sees clean glyphs
using var input = new OcrInput ();
input. LoadImage ( "test-image-with-amgdt-font.png" );
input. EnhanceResolution ( 300 );
input. DeNoise ();
// Confidence reflects training quality
var result = ocr. Read (input);
Console . WriteLine ( $"Text: { result . Text } " );
Console . WriteLine ( $"Confidence: { result . Confidence } %" ); using IronOcr;
// Load the trained model; AutoOsd handles orientation
var ocr = new IronTesseract();
ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata");
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
// Preprocess so the model sees clean glyphs
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");
input.EnhanceResolution(300);
input.DeNoise();
// Confidence reflects training quality
var result = ocr.Read(input);
Console.WriteLine($"Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr
' Load the trained model; AutoOsd handles orientation
Dim ocr As New IronTesseract ()
ocr. UseCustomTesseractLanguageFile ( "path/to/AMGDT.traineddata" )
ocr. Configuration . PageSegmentationMode = TesseractPageSegmentationMode . AutoOsd
' Preprocess so the model sees clean glyphs
Using input As New OcrInput ()
input. LoadImage ( "test-image-with-amgdt-font.png" )
input. EnhanceResolution ( 300 )
input. DeNoise ()
' Confidence reflects training quality
Dim result = ocr. Read (input)
Console . WriteLine ($ "Text: {result.Text}" )
Console . WriteLine ($ "Confidence: {result.Confidence}%" )
End Using Imports IronOcr
' Load the trained model; AutoOsd handles orientation
Dim ocr As New IronTesseract()
ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata")
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd
' Preprocess so the model sees clean glyphs
Using input As New OcrInput()
input.LoadImage("test-image-with-amgdt-font.png")
input.EnhanceResolution(300)
input.DeNoise()
' Confidence reflects training quality
Dim result = ocr.Read(input)
Console.WriteLine($"Text: {result.Text}")
Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
Confidence属性是每个文档的得分; 如果在干净的输入上仍然保持较低,最常见的原因是训练样本太少或基模型不匹配脚本。 一旦您的.traineddata验证完成,请查看我们的自定义语言指南 以获得加载任何自定义语言文件的通用工作流程。
自定义字体训练的关键要点是什么?
训练自定义字体是一次性设置:从目标字体生成.box / UseCustomTesseractLanguageFile加载。 从那里IronOCR读取具有新模型的图像,就像读取标准英语一样。
使用IronOCR与自定义Tesseract模型的关键优势:
重用标准Tesseract构件 :任何您能够用tesstrain构建的.traineddata文件都可以在IronOCR中直接使用,无需转换。
跨平台输出 :训练需要Linux(或WSL2),但训练文件随您的应用程序在Windows、macOS、Linux和Docker上运行。
与API的其余部分无缝集成 :将自定义字体与多种辅助语言 ,图像质量校正 和DPI调整 结合使用,而不更改识别路径。
可调准确性 :错误率是训练样本数量乘以迭代次数的函数。 两个旋钮都被公开(脚本的示例计数加上MAX_ITERATIONS),因此您可以在不离开Tesseract的情况下调整训练时间和BCER之间的平衡。
对于更大的管道,请考虑在许多文档上应用训练模型时使用进度跟踪 和异步处理 。
常见问题解答 只需几行代码,您就可以在 IronOCR 中使用自定义训练的 Tesseract 字体文件。只需创建一个 IronTesseract 实例,使用 .traineddata 文件的路径调用 UseCustomTesseractLanguageFile() 方法,然后使用 Read() 方法对包含特殊字体的图像执行 OCR。
自定义字体训练需要 Linux 环境(建议 Windows 用户使用 WSL2 和 Ubuntu)、安装了开发库的 Tesseract 5 以及要训练的字体文件(.ttf 或 .otf 格式)。在 Linux 中创建的 .traineddata 文件可与 IronOCR 在所有平台上无缝配合使用。
训练自定义字体可以提高特定字体的 OCR 精确度,尤其是与标准 Tesseract 模型有显著差异的装饰字体或特殊字体。然后,IronOCR 就可以使用这些经过训练的字体文件来准确识别包含这些独特字体的图像中的文本,否则标准 OCR 模型将难以读取这些文本。
是的,虽然培训过程需要使用 Linux,但生成的 .traineddata 文件可以在 IronOCR 的所有平台上无缝运行。这意味着您可以在 Linux 上训练一次,然后在 Windows、macOS 或 Linux 部署上使用训练好的数据文件。
为了快速安装,您可以直接下载 IronOCR DLL 或通过 NuGet 包管理器进行安装。推荐使用 NuGet,因为它会自动处理依赖关系,使更新更容易。IronOCR 提供对 Tesseract 5 功能和自定义语言实现的全面支持。
Yes, once trained on a Linux environment, the `.traineddata` file is portable and can be used in applications running on Windows, macOS, Linux, and Docker.
The accuracy depends on training samples and iterations during the training process. More samples and iterations generally enhance accuracy, and IronOCR provides confidence scores to evaluate the model.
This error can often be resolved by patching the Makefile to correctly point it toward the output directory for dictionary files.
`eng.traineddata` serves as the base language model providing linguistic context, which improves the accuracy of the custom-trained font over models built entirely from scratch.
If you receive a 'Destination Folder Access Denied' message, perform the file copy operation from a root shell in the terminal to ensure proper permissions.