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.
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.
-
Install IronOCR with NuGet Package Manager
-
Skopiuj 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; -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Pobierz IronOCR przez NuGet, aby czytać z niestandardowo wytrenowanymi czcionkami
- Zainstaluj Tesseract 5 na WSL2 Ubuntu i sklonuj repozytoria szkoleniowe
tesstrain - Generuj pliki szkoleniowe dla docelowej czcionki za pomocą
split_training_text.py - Zbuduj swój niestandardowy plik
.traineddataużywająctesstraini bazowego modelu językowego - Załaduj przeszkolony plik w IronOCR za pomocą
UseCustomTesseractLanguageFilei wywołajRead
Jak skonfigurować środowisko treningowe?
Jak zainstalować IronOCR?
Zainstaluj IronOCR przez NuGet:
Install-Package IronOcr
Pakiet DLL jest ręczną alternatywą, jeśli nie możesz użyć NuGet. Dla podstawowego silnika zobacz przewodnik po funkcjach Tesseract 5 oraz opis niestandardowego języka.
Jak zainstalować i skonfigurować WSL2 i Ubuntu?
Zapoznaj się z samouczkiem dotyczącym konfiguracji WSL2 i Ubuntu.
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.
Jak zainstalować Tesseract 5 na Ubuntu?
Użyj tych poleceń, aby zainstalować Tesseract 5:
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
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 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
.traineddatabę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
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
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:
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
- 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
.traineddataużywanymi jako model wyjściowy do treningu niestandardowego. - tesstrain/data to miejsce, gdzie zatrzymują się wygenerowane pliki
.box(ramki odwzorowania znaków), obrazy.tifi pośrednie punkty kontrolne LSTM.
Oto jak sekwencja klonowania powinna wyglądać w terminalu:
Aby pracować z wieloma pakietami językowymi obok niestandardowego, zobacz nasz przewodnik po międzynarodowych językach.
Jak wygenerować pliki szkoleniowe?
Jak uruchomić skrypt split_training_text.py?
Z folderu Tesseract_tutorial uruchom:
python split_training_text.py
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:
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>
<dir>~/.fonts</dir>
<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>
<dir>~/.fonts</dir>
Skopiuj to do /etc/fonts:
cp fonts.co/nf /etc/fonts
cp fonts.co/nf /etc/fonts
Następnie wskaż split_training_text.py na tę samą ścieżkę:
fontconf_dir = '/etc/fonts'
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 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
- 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:
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 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:
:path=/static-assets/ocr/content-code-examples/how-to/ocr-custom-font-training-13.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}%");
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.
- Bezproblemowo z resztą API: połącz niestandardowe czcionki z wieloma językami pomocniczymi, poprawą jakości obrazu i dostrajaniem DPI 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 i przetwarzanie asynchroniczne, stosując przeszkolony model w wielu dokumentach.
Często Zadawane Pytania
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.
Czy IronOCR obsługuje wiele języków?
IronOCR obsługuje wiele języków, co czyni go wszechstronnym narzędziem dla globalnych aplikacji wymagających rozpoznawania tekstu w różnych językach.
Czy IronOCR można zintegrować z istniejącymi aplikacjami?
IronOCR jest zaprojektowany do łatwej integracji z istniejącymi aplikacjami używając C#, co pozwala programistom dodać funkcjonalność OCR do swojego oprogramowania z minimalnym wysiłkiem.
Jakie są korzyści z używania IronOCR do zarządzania dokumentami?
Używanie IronOCR do zarządzania dokumentami upraszcza przepływ pracy przez konwertowanie zeskanowanych dokumentów na przeszukiwalny i edytowalny tekst, redukując konieczność ręcznego wprowadzania danych i poprawiając dostępność dokumentów.
Jak IronOCR może poprawić dokładność danych?
IronOCR poprawia dokładność danych dzięki swoim zaawansowanym algorytmom rozpoznawania i funkcjom korekcji obrazów, zapewniając, że proces ekstrakcji tekstu jest zarówno niezawodny, jak i precyzyjny.
Czy dostępna jest bezpłatna wersja próbna IronOCR?
Tak, Iron Software oferuje bezpłatną wersję próbną IronOCR, umożliwiając użytkownikom przetestowanie jego funkcji i możliwości przed podjęciem decyzji o zakupie.

