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ł. Rozwiązaniem jest samodzielne przeszkolenie Tesseracta na konkretnej czcionce, co pozwoli uzyskać pojedynczy artefakt .traineddata, który można dostarczyć wszędzie tam, gdzie działa IronOCR.

Ten przewodnik przeprowadza użytkownika przez cały proces szkolenia niestandardowych czcionek w Tesseract 5 w języku C#: instalację zestawu narzędzi WSL2 Ubuntu, renderowanie plików szkoleniowych .box i .tif z .ttf lub .otf, zbuduj model .traineddata przy użyciu tesstrain w oparciu o podstawowy eng.traineddata, a następnie załaduj wynik do 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 UseCustomTesseractLanguageFile na swój wytrenowany plik .traineddata, a następnie wywołaj Read na dowolnym obrazie, tak jak w przypadku standardowego pakietu językowego.

  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.

Wystarczy WSL2: po zakończeniu szkolenia wynikowy plik .traineddata jest dostarczany wraz z aplikacją IronOCR na systemy 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 jest silnikiem odpowiedzialnym za rozpoznawanie; libtesseract-dev udostępnia nagłówki potrzebne tesstrain 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ć?

W tym samouczku używana jest czcionka AMGDT w formacie .ttf lub .otf.

Eksplorator plików systemu Windows pokazujący pobrany plik czcionki AMGDT Regular.ttf zaznaczony czerwonym ramką do celów szkoleniowych

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.
  • Sprawdź, czy licencja czcionki zezwala na jej rozpowszechnianie, jeśli Twoje .traineddata będzie dostarczane wraz 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/, 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 poziomu Windows, a następnie przeciągnięcie .ttf.

Windows File Explorer showing \\wsl$ network path for accessing Ubuntu filesystem from Windows

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

AMGDT font file being copied into the Ubuntu fonts folder and recognized by the 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 plikami .traineddata, które służą jako model wyjściowy do niestandardowego szkolenia.
  • tesstrain/data to miejsce, w którym trafiają wygenerowane pliki .box (ramki znaków), obrazy .tif oraz pośrednie punkty kontrolne LSTM.

Oto jak sekwencja klonowania powinna wyglądać w terminalu:

Terminal running the four git clone commands and creating the tesstrain data folder

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 jedną parę .box / .tif na próbkę szkoleniową i zapisuje je w folderze danych.

Oto jak uruchomienie skryptu powinno wyglądać podczas generowania par szkoleniowych:

Terminal running split_training_text.py and generating .box and .tif files in the data folder

Jak naprawić ostrzeżenie Fontconfig?

Terminal wyświetlający ostrzeżenia fontconfig dotyczące brakującej czcionki Apex i błędów związanych z pustym katalogiem czcionek

Jeśli pojawi się ostrzeżenie Ostrzeżenie fontconfig: '/tmp/fonts.conf, wiersz 4: ignorowana pusta nazwa katalogu czcionek', fontconfig nie może rozwiązać katalogów czcionek. Popraw to, edytując tesseract_tutorial/fonts.conf:

<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.conf /etc/fonts
cp fonts.conf /etc/fonts
SHELL

Następnie skieruj 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ń liczbę u góry split_training_text.py:

Kod w języku Python ustawiający liczbę=100 i dzielący tablicę wierszy w celu ograniczenia rozmiaru danych szkoleniowych

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 podstawowy plik .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 plik Latin.unicharset z katalogu langdata_lstm i umieść go w folderze tesstrain/data/langdata.

Plik .unicharset określa, jakie znaki może generować trener. Użyj pliku, który obejmuje wszystkie znaki w Twojej czcionce, na przykład Cyrillic.unicharset dla czcionek cyrylickich lub Devanagari.unicharset dla czcionek devanagari.

Oto jak powinno wyglądać udane uruchomienie szkoleniowe, gdy tesstrain generuje plik .traineddata:

tesstrain build pipeline running through training iterations and emitting the AMGDT.traineddata file

Jak zweryfikować dokładność mojego pliku wytrenowanych danych?

Przy 1000 plikach .box i .tif oraz 3000 iteracjach szkoleniowych wynik AMGDT.traineddata osiąga wskaźnik błędu szkoleniowego (BCER) na poziomie 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 za pomocą IronOCR, skieruj UseCustomTesseractLanguageFile na plik i odczytaj przykładowy obraz:

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

Właściwość Confidence to wynik dla danego dokumentu; 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 pliku .traineddata zapoznaj się z naszym przewodnikiem po językach niestandardowych, aby poznać ogólny przebieg procesu ładowania dowolnego pliku języka niestandardowego.

Jakie są kluczowe wnioski z treningu niestandardowej czcionki?

Trening niestandardowej czcionki to jednorazowa konfiguracja: wygeneruj pary .box / .tif z czcionki docelowej, zbuduj model .traineddata za pomocą 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: każdy plik .traineddata, który można skompilować za pomocą tesstrain, działa w IronOCR bez konieczności 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ą widoczne (liczba próbek skryptu Plus oraz MAX_ITERATIONS), dzięki czemu można wyregulować kompromis między czasem szkolenia a wskaźnikiem BCER bez opuszczania 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ł doktórat 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 ...
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 5,896,332 | Wersja: 2026.5 just released
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.