Jak przeprowadzić szkolenie z niestandardowych czcionek dla Tesseract 5 w języku C#

Jak wytrenować niestandardową czcionkę z Tesseract 5 w C

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

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.

  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr
  2. 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;
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

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.

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.

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
SHELL

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.

Eksplorator plików Windows pokazujący pobrany plik czcionki AMGDT Regular.ttf zaznaczony na czerwono do szkolenia

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.

Eksplorator plików Windows przedstawiający ścieżkę sieciową \\wsl$ do uzyskiwania dostępu do systemu plików Ubuntu z poziomu Windows

Oto jak kopia czcionki powinna wyglądać po umieszczeniu w katalogu czcionek Ubuntu:

Plik czcionki AMGDT kopiowany do folderu czcionek Ubuntu i rozpoznawany przez system

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
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:

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 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:

Terminal uruchamiający cztery polecenia git clone i tworzący folder danych tesstrain

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
SHELL

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:

Terminal uruchamiający split_training_text.py i generujący pliki .box oraz .tif w folderze data

Jak naprawić ostrzeżenie Fontconfig?

Terminal pokazujący ostrzeżenia fontconfig o brakującej czcionce Apex i błędy pustego katalogu czcionek

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>
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:

Kod Python ustawiający count=100 i wycinający tablicę linii, aby ograniczyć rozmiar danych treningowych

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:

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:

Potok kompilacji tesstrain przechodzący przez iteracje treningowe i generujący plik AMGDT.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%.

Dziennik szkolenia Tesseract pokazujący poprawę BCER z 6,388% do 5,771% w iteracjach 2194-2298

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
$vbLabelText   $csharpLabel

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.

Kannaopat Udonpant
Inżynier oprogramowania
Zanim stał się inżynierem oprogramowania, Kannapat ukończył doktorat z zasobów środowiskowych na Uniwersytecie Hokkaido w Japonii. W czasie studiowania, Kannapat również został członkiem Laboratorium Robotyki Pojazdów, które jest częścią Wydziału Inżynierii Bioprodukcji. W 2022 roku wykorzystał swoje umiejętności w ...
Czytaj więcej
Sprawdzone przez
Jeff Fritz
Jeffrey T. Fritz
Główny Menedżer Programu - Zespół .NET Community
Jeff jest również Głównym Menedżerem Programu dla zespołów .NET i Visual Studio. Jest producentem wykonawczym wirtualnej serii konferencji .NET Conf i prowadzi 'Fritz and Friends', transmisję na żywo dla deweloperów emitowaną dwa razy w tygodniu, gdzie rozmawia o technologii i pisze kod razem z widzami. Jeff pisze warsztaty, prezentacje i planuje treści dla największych wydarzeń Microsoft dla deweloperów, w tym Microsoft Build, Microsoft Ignite, .NET Conf i Microsoft MVP Summit.
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 6,151,372 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronOcr
uruchom próbkę obserwuj, jak twój obraz staje się tekstem z możliwością wyszukiwania.