# Jak wytrenować niestandardową czcionkę z Tesseract 5 w C#
Domyślny angielski model Tesseract błędnie odczytuje wiele rzeczywistych danych wejściowych: ręczne formularze przyjęć szpitalnych, cyfryzacje starych książek, indywidualnie zaprojektowane dekoracyjne kroje pisma w studiach gry, czy specyficzne symbole dla branż, których ogólny silnik OCR nigdy nie widział. Poprawienie tego polega na samodzielnym trenowaniu Tesseract na dokładnym czcione, tworząc pojedynczy artefakt `.traineddata`, który można wysyłać wszędzie, gdzie IronOCR działa.
Ten przewodnik przeprowadza przez cały proces treningu czcionki Tesseract 5 w C#: zainstaluj narzędzia WSL2 Ubuntu, wygeneruj pliki treningowe `.box` i `.tif` z twoich `.ttf` lub `.otf`, zbuduj model `.traineddata` z `tesstrain` względem bazowego `eng.traineddata`, potem załaduj wynik w IronOCR. Po przeszkoleniu plik jest przenośny między Windows, macOS, Linux, i Docker.
*as-heading:2(Szybki start: Jak użyć wytrenowanego pliku czcionki w C#)*
Skonfiguruj IronOCR, wskazując na plik `UseCustomTesseractLanguageFile`, a następnie wywołaj `Read` na dowolnym obrazie, tak jak byś robił to z podstawowym zestawem językowym.
```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>Minimalny proces (5 kroków)</h3>
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronOcr/">Pobierz IronOCR przez NuGet, aby czytać z niestandardowo wytrenowanymi czcionkami</a></li>
<li>Zainstaluj Tesseract 5 na WSL2 Ubuntu i sklonuj repozytoria szkoleniowe <code>tesstrain</code></li>
<li>Generuj pliki szkoleniowe dla docelowej czcionki za pomocą <code>split_training_text.py</code></li>
<li>Zbuduj swój niestandardowy plik <code>.traineddata</code> używając <code>tesstrain</code> i bazowego modelu językowego</li>
<li>Załaduj przeszkolony plik w IronOCR za pomocą <code>UseCustomTesseractLanguageFile</code> i wywołaj <code>Read</code></li>
</ol>
</div>
## Jak skonfigurować środowisko treningowe?
### Jak zainstalować IronOCR?
Zainstaluj IronOCR przez [NuGet](https://www.nuget.org/packages/IronOcr/):
```shell
:ProductInstall
```
[Pakiet DLL](/csharp/ocr/packages/IronOcr.zip) jest ręczną alternatywą, jeśli nie możesz użyć NuGet. Dla podstawowego silnika zobacz [przewodnik po funkcjach Tesseract 5](https://ironsoftware.com/csharp/ocr/tutorials/c-sharp-tesseract-ocr/) oraz [opis niestandardowego języka](https://ironsoftware.com/csharp/ocr/examples/ocr-tesseract-custom-languages/).
### Jak zainstalować i skonfigurować WSL2 i Ubuntu?
Zapoznaj się z samouczkiem dotyczącym [konfiguracji WSL2 i Ubuntu](https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-10).
[[i:(Szkolenie dotyczące czcionek niestandardowych wymaga systemu Linux.)]]
WSL2 wystarcza: gdy trening jest zakończony, wynikowy plik `.traineddata` jest rozprowadzany razem z twoją aplikacją IronOCR na Windows, macOS, Linux lub Docker. Dla szczegółów wdrażania zobacz [przewodnik wdrażania dla Linux](https://ironsoftware.com/csharp/ocr/get-started/linux/).
### Jak zainstalować Tesseract 5 na Ubuntu?
Użyj tych poleceń, aby zainstalować Tesseract 5:
```bash
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
```
Pakiet `tesseract-ocr` to silnik, który uruchamia rozpoznawanie; `libtesseract-dev` ujawnia nagłówki, których tesstrain potrzebuje do zbudowania modelu. Gdy Twój przeszkolony plik jest w użyciu, [przewodnik konfiguracji Tesseract](https://ironsoftware.com/csharp/ocr/examples/csharp-configure-setup-tesseract/) obejmuje strojenie w czasie wykonywania.
## Jak przygotować czcionkę do szkolenia?
### Jaką czcionkę powinienem pobrać?
Ten tutorial używa czcionki AMGDT w formacie `.ttf` lub `.otf`.

Wybierając czcionkę do szkolenia:
- Wybierz czcionki, które domyślny model angielski błędnie odczytuje. Przeszkolenie czcionki, która jest już rozpoznawana, marnuje czas.
- Upewnij się, że licencja czcionki pozwala na redystrybucję, jeśli twoja `.traineddata` będzie dostarczana z aplikacją.
- Dekoracyjne, ręczne i specyficzne dla branży czcionki (medyczne, prawne, kartograficzne) zyskują najwięcej na szkoleniu.
- Dopasuj próbki szkoleniowe do tego, co faktycznie zobaczy produkcja, w tym rozdzielczość i oświetlenie.
### Jak zamontować dysk?
Zamontuj Dysk D: jako swoją przestrzeń roboczą:
```bash
cd /
cd /mnt/d
```
WSL2 montuje każdy dysk Windows pod /mnt/<litera>, więc możesz edytować pliki na Windows i uruchamiać przeciw nim komendy szkoleniowe w tej samej sesji.
### Jak skopiować plik czcionki do folderu czcionek Ubuntu?
Tesseract renderuje przykładowy tekst w Twojej czcionce, aby zbudować obrazy szkoleniowe, więc czcionka musi być zainstalowana po stronie Linux, nie tylko na Windows. Skopiuj plik czcionki do obu katalogów czcionek Ubuntu: /usr/share/fonts oraz /usr/local/share/fonts. Najprostszym sposobem jest wpisanie \wsl$ w pasku adresu Eksploratora plików, aby przeglądać system plików Ubuntu z Windows, a następnie przeciągnij przez `.ttf`.

Oto jak kopia czcionki powinna wyglądać po umieszczeniu w katalogu czcionek Ubuntu:
<img src="/static-assets/ocr/how-to/ocr-custom-font-training/amdfont.gif" alt="Plik czcionki AMGDT kopiowany do folderu czcionek Ubuntu i rozpoznawany przez system" class="img-responsive add-shadow" style="max-width: 720px; width: 100%; display: block; margin: 0 auto 30px auto;"/>
#### Co zrobić, jeśli pojawi się komunikat Brak dostępu do folderu docelowego?
Jeśli Eksplorator plików odrzuci kopiowanie, uruchom je z powłoki root:
```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
```
## Jak sklonować repozytoria szkoleniowe z GitHub?
Przepływ szkoleniowy zależy od trzech repozytoriów. Najpierw sklonuj obudowę tutorialu, następnie dwa główne repozytoria Tesseract wewnątrz niego, a potem stwórz folder wyjściowy:
```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 zawiera skrypty Python i pliki konfiguracyjne, które kierują każdym krokiem szkolenia (generowanie tekstu, renderowanie obrazów, tworzenie par treningowych).
- tesstrain zawiera Makefile, który napędza rzeczywiste uruchomienie szkolenia.
- Tesseract zawiera folder tessdata z podstawowymi plikami `.traineddata` używanymi jako model wyjściowy do treningu niestandardowego.
- tesstrain/data to miejsce, gdzie zatrzymują się wygenerowane pliki `.box` (ramki odwzorowania znaków), obrazy `.tif` i pośrednie punkty kontrolne LSTM.
Oto jak sekwencja klonowania powinna wyglądać w terminalu:
<img src="/static-assets/ocr/how-to/ocr-custom-font-training/gitlogs.gif" alt="Terminal uruchamiający cztery polecenia git clone i tworzący folder danych tesstrain" class="img-responsive add-shadow" style="max-width: 720px; width: 100%; display: block; margin: 0 auto 30px auto;"/>
Aby pracować z wieloma pakietami językowymi obok niestandardowego, zobacz nasz [przewodnik po międzynarodowych językach](https://ironsoftware.com/csharp/ocr/examples/intl-languages/).
## Jak wygenerować pliki szkoleniowe?
### Jak uruchomić skrypt split_training_text.py?
Z folderu Tesseract_tutorial uruchom:
```shell
python split_training_text.py
```
Skrypt generuje parę `.box` / `.tif` na próbkę treningową i zapisuje je w folderze danych.
Oto jak uruchomienie skryptu powinno wyglądać podczas generowania par szkoleniowych:
<img src="/static-assets/ocr/how-to/ocr-custom-font-training/pythontest.gif" alt="Terminal uruchamiający split_training_text.py i generujący pliki .box oraz .tif w folderze data" class="img-responsive add-shadow" style="max-width: 720px; width: 100%; display: block; margin: 0 auto 30px auto;"/>
#### Jak naprawić ostrzeżenie Fontconfig?

Jeśli pojawi się ostrzeżenie *Ostrzeżenie fontconfig: '/tmp/fonts.co/nf, wiersz 4: ignorowana pusta nazwa katalogu czcionek'*, fontconfig nie może rozwiązać katalogów czcionek. Popraw to, edytując `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>
```
Skopiuj to do /etc/fonts:
```bash
cp fonts.co/nf /etc/fonts
```
Następnie wskaż `split_training_text.py` na tę samą ścieżkę:
```python
fontconf_dir = '/etc/fonts'
```
#### Ile plików szkoleniowych powinienem wygenerować?
Domyślnie skrypt generuje 100 par szkoleniowych. Zmień licznik blisko góry `split_training_text.py`:

Wytyczne dotyczące rozmiaru:
- 100-500 próbek wystarczy, aby potwierdzić, że przepływ działa.
- 1000-5000 próbek to zakres roboczy dla dokładności produkcyjnej.
- Tekst szkoleniowy powinien obejmować każdy znak, który twoja czcionka ma rozpoznawać, idealnie kilkukrotnie.
- Więcej próbek oznacza więcej czasu szkolenia; wybierz najmniejszą liczbę, która osiąga twój cel dokładności.
### Skąd pobrać plik eng.traineddata?
Pobierz `eng.traineddata` z [repozytorium tessdata_best](https://github.com/tesseract-ocr/tessdata_best) i umieść go w Tesseract_tutorial/tesseract/tessdata.
Bazowy model zapewnia trenerowi kontekst językowy (które sekwencje znaków tworzą prawdopodobne słowa), więc dokładność jest znacznie lepsza niż przy treningu od podstaw. Wybierz model bazowy w tym samym języku co twój tekst szkoleniowy. Jeśli napotkasz problemy, zobacz [przewodnik dotyczący niestandardowych pakietów języka OCR](https://ironsoftware.com/csharp/ocr/troubleshooting/custom-ocr-language-packs/).
## Jak zbudować mój niestandardowy plik wytrenowanych danych czcionki?
Z folderu tesstrain uruchom:
```bash
TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
```
- MODEL_NAME to nazwa twojej niestandardowej czcionki (używana dla nazwy pliku wyjściowego).
- START_MODEL to bazowy `.traineddata`, który pobrałeś powyżej.
- MAX_ITERATIONS ogranicza przebieg szkolenia; wyższe wartości zwykle zmniejszają wskaźnik błędu.
### Co zrobić, jeśli w pliku Makefile pojawia się komunikat "Failed to Read Data"?
Aby rozwiązać błędy 'Failed to read data', załaduj plik 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
```
Poprawka wskazuje na rzeczywisty katalog wyjściowy, aby Makefile mógł zlokalizować pliki słownika.
### Jak naprawić błąd "Failed to Load Script Unicharset"?
Pobierz `Latin.unicharset` z [langdata_lstm](https://github.com/tesseract-ocr/langdata_lstm) i umieść go w tesstrain/data/langdata.
Plik `.unicharset` definiuje, które znaki trener może emitować. Użyj pliku, który obejmuje każdy znak w twojej czcionce, na przykład `Cyrillic.unicharset` dla czcionek cyrylicznych lub `Devanagari.unicharset` dla Dewanagari.
Oto, jak powinien wyglądać udany przebieg treningu, gdy tesstrain produkuje plik `.traineddata`:
<img src="/static-assets/ocr/how-to/ocr-custom-font-training/trainingdatagen.gif" alt="Potok kompilacji tesstrain przechodzący przez iteracje treningowe i generujący plik AMGDT.traineddata" class="img-responsive add-shadow" style="max-width: 720px; width: 100%; display: block; margin: 0 auto 30px auto;"/>
## Jak zweryfikować dokładność mojego pliku wytrenowanych danych?
Z 1000 plikami `.box` i `.tif` oraz 3000 iteracjami treningowymi, wyjściowy `AMGDT.traineddata` osiąga wskaźnik błędów treningowych (BCER) około 5,77%.

Aby przetestować wytrenowany model z IronOCR, wskaż `UseCustomTesseractLanguageFile` na plik i przeczytaj przykładowy obraz:
```cs
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}%");
```
Właściwość `Confidence` to wynik na dokument; jeśli pozostaje niski nawet na czystych danych wejściowych, najczęstsze przyczyny to zbyt mała liczba próbek szkoleniowych lub model bazowy, który nie pasuje do skryptu. Po zweryfikowaniu twojego `.traineddata`, zobacz nasz [przewodnik niestandardowy język](https://ironsoftware.com/csharp/ocr/how-to/ocr-custom-language/) dla ogólnego przepływu pracy ładowania dowolnego pliku niestandardowej językowej.
## Jakie są kluczowe wnioski z treningu niestandardowej czcionki?
Trenowanie czcionki niestandardowej to jednorazowa konfiguracja: generuj pary `.box` / `.tif` z docelowej czcionki, zbuduj model `.traineddata` z tesstrain, a następnie załaduj go przez `UseCustomTesseractLanguageFile`. Od tego momentu IronOCR czyta obrazy z nowym modelem dokładnie tak, jak czyta standardowe angielskie.
Kluczowe zalety korzystania z IronOCR z niestandardowym modelem Tesseract:
- **Wykorzystuje standardowe artefakty Tesseract**: dowolny plik `.traineddata`, który możesz zbudować za pomocą tesstrain, działa w IronOCR bez konwersji.
- **Wyjście na różnych platformach**: szkolenie wymaga Linux (lub WSL2), ale przeszkolony plik jest dostarczany z aplikacją na Windows, macOS, Linux, i Docker.
- **Bezproblemowo z resztą API**: połącz niestandardowe czcionki z [wieloma językami pomocniczymi](https://ironsoftware.com/csharp/ocr/how-to/ocr-multiple-languages/), [poprawą jakości obrazu](https://ironsoftware.com/csharp/ocr/how-to/image-quality-correction/) i [dostrajaniem DPI](https://ironsoftware.com/csharp/ocr/how-to/dpi-setting/) bez zmiany ścieżki rozpoznawania.
- **Regulowana dokładność**: wskaźnik błędu to funkcja prób szkoleniowych pomnożona przez iteracje. Oba pokrętła są ujawnione (liczba próbek skryptu plus `MAX_ITERATIONS`), abyś mógł dostosować kompromis pomiędzy czasem treningu a BCER, nie opuszczając Tesseract.
Dla większych przepływów roboczych, rozważ [śledzenie postępu](https://ironsoftware.com/csharp/ocr/how-to/progress-tracking/) i [przetwarzanie asynchroniczne](https://ironsoftware.com/csharp/ocr/how-to/async/), stosując przeszkolony model w wielu dokumentach.
Domyślny angielski model Tesseract błędnie odczytuje wiele rzeczywistych danych wejściowych: ręczne formularze przyjęć szpitalnych, cyfryzacje starych książek, indywidualnie zaprojektowane dekoracyjne kroje pisma w studiach gry, czy specyficzne symbole dla branż, których ogólny silnik OCR nigdy nie widział. Poprawienie tego polega na samodzielnym trenowaniu Tesseract na dokładnym czcione, tworząc pojedynczy artefakt .traineddata, który można wysyłać wszędzie, gdzie IronOCR działa.
Ten przewodnik przeprowadza przez cały proces treningu czcionki Tesseract 5 w C#: zainstaluj narzędzia WSL2 Ubuntu, wygeneruj pliki treningowe .box i .tif z twoich .ttf lub .otf, zbuduj model .traineddata z tesstrain względem bazowego eng.traineddata, potem załaduj wynik w IronOCR. Po przeszkoleniu plik jest przenośny między Windows, macOS, Linux, i Docker.
Szybki start: Jak użyć wytrenowanego pliku czcionki w C#
Skonfiguruj IronOCR, wskazując na plik UseCustomTesseractLanguageFile, a następnie wywołaj Read na dowolnym obrazie, tak jak byś robił to z podstawowym zestawem językowym.
1Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr
Install-Package IronOcr
2Skopiuj i uruchom ten fragment kodu.
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#
3Wdrożenie do testowania w środowisku produkcyjnym
Zwróć uwagę: Szkolenie dotyczące czcionek niestandardowych wymaga systemu Linux.
WSL2 wystarcza: gdy trening jest zakończony, wynikowy plik .traineddata jest rozprowadzany razem z twoją aplikacją IronOCR na Windows, macOS, Linux lub Docker. Dla szczegółów wdrażania zobacz przewodnik wdrażania dla Linux.
Pakiet tesseract-ocr to silnik, który uruchamia rozpoznawanie; libtesseract-dev ujawnia nagłówki, których tesstrain potrzebuje do zbudowania modelu. Gdy Twój przeszkolony plik jest w użyciu, przewodnik konfiguracji Tesseract obejmuje strojenie w czasie wykonywania.
Jak przygotować czcionkę do szkolenia?
Jaką czcionkę powinienem pobrać?
Ten tutorial używa czcionki AMGDT w formacie .ttf lub .otf.
Wybierając czcionkę do szkolenia:
Wybierz czcionki, które domyślny model angielski błędnie odczytuje. Przeszkolenie czcionki, która jest już rozpoznawana, marnuje czas.
Upewnij się, że licencja czcionki pozwala na redystrybucję, jeśli twoja .traineddata będzie dostarczana z aplikacją.
Dekoracyjne, ręczne i specyficzne dla branży czcionki (medyczne, prawne, kartograficzne) zyskują najwięcej na szkoleniu.
Dopasuj próbki szkoleniowe do tego, co faktycznie zobaczy produkcja, w tym rozdzielczość i oświetlenie.
Jak zamontować dysk?
Zamontuj Dysk D: jako swoją przestrzeń roboczą:
cd /cd /mnt/d
cd /
cd /mnt/d
SHELL
WSL2 montuje każdy dysk Windows pod /mnt/<litera>, więc możesz edytować pliki na Windows i uruchamiać przeciw nim komendy szkoleniowe w tej samej sesji.
Jak skopiować plik czcionki do folderu czcionek Ubuntu?
Tesseract renderuje przykładowy tekst w Twojej czcionce, aby zbudować obrazy szkoleniowe, więc czcionka musi być zainstalowana po stronie Linux, nie tylko na Windows. Skopiuj plik czcionki do obu katalogów czcionek Ubuntu: /usr/share/fonts oraz /usr/local/share/fonts. Najprostszym sposobem jest wpisanie \wsl$ w pasku adresu Eksploratora plików, aby przeglądać system plików Ubuntu z Windows, a następnie przeciągnij przez .ttf.
Oto jak kopia czcionki powinna wyglądać po umieszczeniu w katalogu czcionek Ubuntu:
Co zrobić, jeśli pojawi się komunikat Brak dostępu do folderu docelowego?
Jeśli Eksplorator plików odrzuci kopiowanie, uruchom je z powłoki root:
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
Jak sklonować repozytoria szkoleniowe z GitHub?
Przepływ szkoleniowy zależy od trzech repozytoriów. Najpierw sklonuj obudowę tutorialu, następnie dwa główne repozytoria Tesseract wewnątrz niego, a potem stwórz folder wyjściowy:
Tesseract_tutorial zawiera skrypty Python i pliki konfiguracyjne, które kierują każdym krokiem szkolenia (generowanie tekstu, renderowanie obrazów, tworzenie par treningowych).
tesstrain zawiera Makefile, który napędza rzeczywiste uruchomienie szkolenia.
Tesseract zawiera folder tessdata z podstawowymi plikami .traineddata używanymi jako model wyjściowy do treningu niestandardowego.
tesstrain/data to miejsce, gdzie zatrzymują się wygenerowane pliki .box (ramki odwzorowania znaków), obrazy .tif i pośrednie punkty kontrolne LSTM.
Oto jak sekwencja klonowania powinna wyglądać w terminalu:
Skrypt generuje parę .box / .tif na próbkę treningową i zapisuje je w folderze danych.
Oto jak uruchomienie skryptu powinno wyglądać podczas generowania par szkoleniowych:
Jak naprawić ostrzeżenie Fontconfig?
Jeśli pojawi się ostrzeżenie Ostrzeżenie fontconfig: '/tmp/fonts.co/nf, wiersz 4: ignorowana pusta nazwa katalogu czcionek', fontconfig nie może rozwiązać katalogów czcionek. Popraw to, edytując 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
Skopiuj to do /etc/fonts:
cp fonts.co/nf /etc/fonts
cp fonts.co/nf /etc/fonts
SHELL
Następnie wskaż split_training_text.py na tę samą ścieżkę:
fontconf_dir = '/etc/fonts'
fontconf_dir = '/etc/fonts'
Python
Ile plików szkoleniowych powinienem wygenerować?
Domyślnie skrypt generuje 100 par szkoleniowych. Zmień licznik blisko góry split_training_text.py:
Wytyczne dotyczące rozmiaru:
100-500 próbek wystarczy, aby potwierdzić, że przepływ działa.
1000-5000 próbek to zakres roboczy dla dokładności produkcyjnej.
Tekst szkoleniowy powinien obejmować każdy znak, który twoja czcionka ma rozpoznawać, idealnie kilkukrotnie.
Więcej próbek oznacza więcej czasu szkolenia; wybierz najmniejszą liczbę, która osiąga twój cel dokładności.
Skąd pobrać plik eng.traineddata?
Pobierz eng.traineddata z repozytorium tessdata_best i umieść go w Tesseract_tutorial/tesseract/tessdata.
Bazowy model zapewnia trenerowi kontekst językowy (które sekwencje znaków tworzą prawdopodobne słowa), więc dokładność jest znacznie lepsza niż przy treningu od podstaw. Wybierz model bazowy w tym samym języku co twój tekst szkoleniowy. Jeśli napotkasz problemy, zobacz przewodnik dotyczący niestandardowych pakietów języka OCR.
Jak zbudować mój niestandardowy plik wytrenowanych danych czcionki?
Z folderu tesstrain uruchom:
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 to nazwa twojej niestandardowej czcionki (używana dla nazwy pliku wyjściowego).
START_MODEL to bazowy .traineddata, który pobrałeś powyżej.
MAX_ITERATIONS ogranicza przebieg szkolenia; wyższe wartości zwykle zmniejszają wskaźnik błędu.
Co zrobić, jeśli w pliku Makefile pojawia się komunikat "Failed to Read Data"?
Aby rozwiązać błędy 'Failed to read data', załaduj plik Makefile:
Poprawka wskazuje na rzeczywisty katalog wyjściowy, aby Makefile mógł zlokalizować pliki słownika.
Jak naprawić błąd "Failed to Load Script Unicharset"?
Pobierz Latin.unicharset z langdata_lstm i umieść go w tesstrain/data/langdata.
Plik .unicharset definiuje, które znaki trener może emitować. Użyj pliku, który obejmuje każdy znak w twojej czcionce, na przykład Cyrillic.unicharset dla czcionek cyrylicznych lub Devanagari.unicharset dla Dewanagari.
Oto, jak powinien wyglądać udany przebieg treningu, gdy tesstrain produkuje plik .traineddata:
Jak zweryfikować dokładność mojego pliku wytrenowanych danych?
Z 1000 plikami .box i .tif oraz 3000 iteracjami treningowymi, wyjściowy AMGDT.traineddata osiąga wskaźnik błędów treningowych (BCER) około 5,77%.
Aby przetestować wytrenowany model z IronOCR, wskaż UseCustomTesseractLanguageFile na plik i przeczytaj przykładowy obraz:
using IronOcr;// Load the trained model; AutoOsd handles orientationvar ocr = new IronTesseract();ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata");ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;// Preprocess so the model sees clean glyphsusing var input = new OcrInput();input.LoadImage("test-image-with-amgdt-font.png");input.EnhanceResolution(300);input.DeNoise();// Confidence reflects training qualityvar 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}%");
ImportsIronOcr' Load the trained model; AutoOsd handles orientationDim ocr As New IronTesseract()ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata")ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd' Preprocess so the model sees clean glyphsUsing 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}%")EndUsing
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
Właściwość Confidence to wynik na dokument; jeśli pozostaje niski nawet na czystych danych wejściowych, najczęstsze przyczyny to zbyt mała liczba próbek szkoleniowych lub model bazowy, który nie pasuje do skryptu. Po zweryfikowaniu twojego .traineddata, zobacz nasz przewodnik niestandardowy język dla ogólnego przepływu pracy ładowania dowolnego pliku niestandardowej językowej.
Jakie są kluczowe wnioski z treningu niestandardowej czcionki?
Trenowanie czcionki niestandardowej to jednorazowa konfiguracja: generuj pary .box / .tif z docelowej czcionki, zbuduj model .traineddata z tesstrain, a następnie załaduj go przez UseCustomTesseractLanguageFile. Od tego momentu IronOCR czyta obrazy z nowym modelem dokładnie tak, jak czyta standardowe angielskie.
Kluczowe zalety korzystania z IronOCR z niestandardowym modelem Tesseract:
Wykorzystuje standardowe artefakty Tesseract: dowolny plik .traineddata, który możesz zbudować za pomocą tesstrain, działa w IronOCR bez konwersji.
Wyjście na różnych platformach: szkolenie wymaga Linux (lub WSL2), ale przeszkolony plik jest dostarczany z aplikacją na Windows, macOS, Linux, i Docker.
Regulowana dokładność: wskaźnik błędu to funkcja prób szkoleniowych pomnożona przez iteracje. Oba pokrętła są ujawnione (liczba próbek skryptu plus MAX_ITERATIONS), abyś mógł dostosować kompromis pomiędzy czasem treningu a BCER, nie opuszczając Tesseract.
Jak używać pliku niestandardowo przeszkolonej czcionki w C#?
Możesz używać swojego pliku czcionki Tesseract przeszkolonego niestandardowo w IronOCR za pomocą kilku linijek kodu. Po prostu stwórz instancję IronTesseract, wywołaj UseCustomTesseractLanguageFile() ze ścieżką do swojego pliku .traineddata, a następnie użyj metody Read(), aby wykonać OCR na obrazach zawierających twoją specjalną czcionkę.
Jakie są wymagania dla trenowania niestandardowych czcionek dla OCR?
Trenowanie niestandardowych czcionek wymaga środowiska Linux (WSL2 z Ubuntu jest zalecane dla użytkowników Windows), zainstalowanego Tesseract 5 wraz z bibliotekami deweloperskimi oraz pliku czcionki, którą chcesz trenować (w formacie .ttf lub .otf). Wynikowe pliki .traineddata stworzone w Linuxie działają bezproblemowo z IronOCR na wszystkich platformach.
Dlaczego warto trenować niestandardowe czcionki zamiast używać standardowego OCR?
Trenowanie niestandardowych czcionek poprawia dokładność OCR dla specyficznych czcionek, szczególnie dekoracyjnych lub specjalnych, które znacznie różnią się od standardowych modeli Tesseract. IronOCR może wtedy używać tych przeszkolonych plików czcionek, aby dokładnie rozpoznawać tekst na obrazach zawierających te unikalne czcionki, które w przeciwnym razie byłyby trudne do odczytania z użyciem standardowych modeli OCR.
Czy mogę używać niestandardowo przeszkolonych czcionek na różnych platformach?
Tak, mimo że proces trenowania wymaga Linuxa, wynikowe pliki .traineddata działają bezproblemowo na wszystkich platformach z IronOCR. To oznacza, że można trenować raz na Linuxie i używać przeszkolonego pliku danych na Windows, macOS czy wdrożeniach Linuxowych.
Jaka metoda instalacji jest zalecana na początek?
Dla szybkiej konfiguracji możesz pobrać plik DLL IronOCR bezpośrednio lub zainstalować przez Menedżer Pakietów NuGet. Zalecane jest użycie NuGet, ponieważ automatycznie zarządza zależnościami i ułatwia aktualizacje. IronOCR zapewnia kompleksowe wsparcie dla funkcji Tesseract 5 i niestandardowych implementacji językowych.
Can I deploy my custom-trained Tesseract model on multiple platforms?
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.
What accuracy can I expect from a custom-trained font model in IronOCR?
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.
How can I troubleshoot 'Failed to Read Data' errors during training?
This error can often be resolved by patching the Makefile to correctly point it toward the output directory for dictionary files.
What is the role of the `eng.traineddata` file in custom font training?
`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.
What should I do if I encounter permission issues copying font files during setup?
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.