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

Szkolenie z niestandardowych czcionek C# w Tesseract 5 dla programistów Windows

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

Szkolenie niestandardowych czcionek w Tesseract 5 poprawia dokładność OCR dla określonych czcionek. Proces ten tworzy dane szkoleniowe, które uczą silnik charakterystyki czcionek. Wynikowy plik .traineddata działa z IronOCR, aby dokładnie rozpoznawać dekoracyjne lub specjalne czcionki.

Szybki start: Użyj pliku czcionki .traineddata w języku C#

Wystarczy kilka wierszy kodu, aby użyć własnego, specjalnie wytrenowanego pliku czcionki Tesseract w IronOCR. Idealny do dokładnego OCR w przypadku czcionek specjalnych lub ozdobnych.

  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr
  2. Skopiuj i uruchom ten fragment kodu.

    var ocr = new IronOcr.IronTesseract();
    ocr.UseCustomTesseractLanguageFile("path/to/YourCustomFont.traineddata");
    string text = ocr.Read(new IronOcr.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 pobrać najnowszą wersję IronOCR?

Jaka metoda instalacji powinna być użyta?

Pobierz bibliotekę DLL IronOCR bezpośrednio na swój komputer.

Dlaczego warto zamiast tego używać NuGet?

Alternatywnie można zainstalować bibliotekę za pomocą NuGet, używając następującego polecenia:

Install-Package IronOcr

IronOCR zapewnia kompleksową obsługę funkcji Tesseract 5 oraz niestandardowych implementacji językowych, dzięki czemu idealnie nadaje się do specjalistycznych zastosowań OCR.


Jak zainstalować i skonfigurować WSL2 oraz Ubuntu?

Zapoznaj się z samouczkiem dotyczącym konfiguracji WSL2 i Ubuntu.

Zwróć uwagęSzkolenie dotyczące czcionek niestandardowych wymaga systemu Linux.

Szkolenie wymaga Linuxa, ale uzyskane pliki .traineddata działają bezproblemowo na wszystkich platformach. Szczegółowe instrukcje dotyczące konfiguracji w systemie Linux można znaleźć w naszym przewodniku wdrażania dla systemu Linux.

Jak zainstalować Tesseract 5 w systemie 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

Pakiety te zawierają podstawowy silnik OCR Tesseract oraz biblioteki programistyczne niezbędne do szkolenia. Aby zapoznać się z zaawansowanymi opcjami konfiguracji Tesseract, zapoznaj się z naszym szczegółowym przewodnikiem konfiguracji.

Którą czcionkę powinienem pobrać do nauki?

W tym samouczku używana jest czcionka AMGDT. Plik czcionki może mieć format .ttf lub .otf. Eksplorator plików Windows pokazuje pobrany plik czcionki AMGDT Regular.ttf zaznaczony czerwoną ramką do szkolenia

Przy wyborze czcionek do szkolenia:

  • Wybierz czcionki, które znacznie różnią się od standardowych modeli Tesseract
  • Należy zapewnić odpowiednią licencję na czcionkę
  • Rozważ użycie ozdobnych, odręcznych lub specjalistycznych czcionek branżowych
  • Przetestuj z czcionkami, z którymi dana aplikacja ma do czynienia w środowisku produkcyjnym

Jak zamontować dysk twardy w celu szkolenia z czcionek niestandardowych?

Użyj tych poleceń, aby zamontować Dysk D: jako swoje miejsce pracy:

cd /
cd /mnt/d
cd /
cd /mnt/d
SHELL

Umożliwia to pracę z plikami przechowywanymi na dyskach systemu Windows bezpośrednio ze środowiska Ubuntu WSL2.

Jak skopiować plik czcionki do folderu czcionek w systemie Ubuntu?

Skopiuj plik czcionki do tych katalogów na Ubuntu: /usr/share/fonts i /usr/local/share/fonts.

Uzyskaj dostęp do plików w Ubuntu, wpisując \\wsl$ w pasku adresu eksploratora plików.

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

Co zrobić, jeśli otrzymam komunikat o odmowie dostępu do folderu docelowego?

Jeśli napotkasz błędy odmowy dostępu, użyj wiersza poleceń do skopiowania plików:

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

Instalacja czcionek ma kluczowe znaczenie dla procesu szkolenia. System potrzebuje dostępu do renderowania czcionki podczas generowania obrazów szkoleniowych.

Jak sklonować tesseract_tutorial z GitHub?

Sklonuj repozytorium tesseract_tutorial używając tego polecenia:

git clone https://github.com/astutejoe/tesseract_tutorial.git
git clone https://github.com/astutejoe/tesseract_tutorial.git
SHELL

To repozytorium zawiera niezbędne skrypty w języku Python oraz pliki konfiguracyjne do procesu szkolenia. Skrypty automatyzują wiele ręcznych czynności związanych z uczeniem czcionek.

Jak sklonować tesstrain i tesseract z GitHub?

Przejdź do katalogu tesseract_tutorial, a następnie sklonuj repozytoria tesstrain i tesseract:

git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
SHELL
  • tesstrain zawiera plik Makefile używany do tworzenia pliku .traineddata
  • tesseract zawiera folder tessdata z oryginalnymi plikami .traineddata używanymi jako referencje podczas szkolenia niestandardowych czcionek

Więcej informacji na temat pracy z wieloma pakietami językowymi i niestandardowymi danymi szkoleniowymi można znaleźć w naszym przewodniku po językach międzynarodowych.

Jak utworzyć folder "data" do przechowywania wyników?

Utwórz folder danych w tesseract_tutorial/tesstrain:

mkdir tesseract_tutorial/tesstrain/data
mkdir tesseract_tutorial/tesstrain/data
SHELL

W tym folderze przechowywane są wszystkie wygenerowane pliki szkoleniowe, w tym pliki .box, .tif oraz pośrednie artefakty szkoleniowe.

Jak uruchomić split_training_text.py?

Wróć do folderu tesseract_tutorial i wykonaj to polecenie:

python split_training_text.py
python split_training_text.py
SHELL

Po uruchomieniu split_training_text.py tworzy pliki .box i .tif w folderze danych.

Jak naprawić ostrzeżenie Fontconfig?

Terminal pokazuje ostrzeżenia dotyczące brakującej czcionki Apex i błędy pustego katalogu czcionek Jeśli zobaczysz ostrzeżenie Fontconfig warning: "/tmp/fonts.conf, line 4: empty font directory name ignored", oznacza to brakujące katalogi czcionek. Napraw to, edytując plik tesseract_tutorial/fonts.conf i dodając:

<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 za pomocą:

cp fonts.conf /etc/fonts
cp fonts.conf /etc/fonts
SHELL

Dodatkowo zaktualizuj split_training_text.py:

fontconf_dir = '/etc/fonts'
fontconf_dir = '/etc/fonts'
PYTHON

Ile plików szkoleniowych należy wygenerować?

Obecna konfiguracja generuje 100 plików szkoleniowych. Możesz to zmodyfikować w split_training_text.py.

Kod Pythona ustawiający count=100 i przycinający tablicę lines, aby ograniczyć rozmiar danych szkoleniowych

W celu uzyskania szkolenia na poziomie produkcyjnym:

  • Zacznij od 100–500 próbek do przetestowania
  • Użyj 1000–5000 próbek, aby uzyskać większą dokładność
  • Proszę dołączyć różnorodne próbki tekstu zawierające wszystkie wymagane znaki
  • Równowaga między czasem poświęconym na szkolenie a wymaganiami dotyczącymi dokładności

Gdzie pobrać eng.traineddata?

Pobierz eng.traineddata z tego repozytorium i umieść w tesseract_tutorial/tesseract/tessdata.

Model bazowy zapewnia kontekst językowy, który poprawia dokładność rozpoznawania. Wybierz model bazowy, który odpowiada językowi docelowemu. W przypadku problemów z niestandardowymi pakietami językowymi zapoznaj się z naszym przewodnikiem po niestandardowych pakietach językowych OCR.

Jak utworzyć swoją niestandardową czcionkę .traineddata?

Przejdź do folderu tesstrain i użyj tego polecenia w WSL2:

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 jest nazwą danej niestandardowej czcionki
  • START_MODEL jest oryginalną referencją .traineddata
  • MAX_ITERATIONS określa liczbę iteracji (większa liczba iteracji poprawia dokładność)

Co zrobić, jeśli w pliku Makefile pojawia się komunikat "Failed to Read Data"?

Aby rozwiązać problemy związane z komunikatem "Nie udało się odczytać danych", zmodyfikuj 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

Ta modyfikacja gwarantuje, że plik Makefile szuka plików w prawidłowej strukturze katalogów wyjściowych.

Jak naprawić błąd "Failed to Load Script Unicharset"?

Wstaw Latin.unicharset do folderu tesstrain/data/langdata. Znaleźć Latin.unicharset tutaj.

Plik unicharset definiuje zestaw znaków dla danego języka lub alfabetu. Upewnij się, że jest zgodny z zakresem znaków danej czcionki.

Jak zweryfikować dokładność utworzonej .traineddata?

Z 1000 plikami .box i .tif oraz 3000 iteracji szkoleniowych, wynikowy AMGDT.traineddata osiągnął minimalny współczynnik błędów szkolenia (BCER) na poziomie około 5,77%.

Dziennik szkolenia Tesseract pokazuje poprawe BCER z 6,388% do 5,771% w iteracjach 2194-2298

Aby przetestować wyszkolony model za pomocą IronOCR:

using IronOcr;

// Initialize IronOCR with custom trained data
var ocr = new IronTesseract();

// Load your custom trained font
ocr.UseCustomTesseractLanguageFile(@"path\to\AMGDT.traineddata");

// Configure for optimal results
ocr.Configuration.BlackListCharacters = "";
ocr.Configuration.WhiteListCharacters = "";
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Process an image with your custom font
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");

// Optional: Apply filters if needed
input.EnhanceResolution(300);
input.DeNoise();

// Perform OCR
var result = ocr.Read(input);
Console.WriteLine($"Recognized Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
using IronOcr;

// Initialize IronOCR with custom trained data
var ocr = new IronTesseract();

// Load your custom trained font
ocr.UseCustomTesseractLanguageFile(@"path\to\AMGDT.traineddata");

// Configure for optimal results
ocr.Configuration.BlackListCharacters = "";
ocr.Configuration.WhiteListCharacters = "";
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Process an image with your custom font
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");

// Optional: Apply filters if needed
input.EnhanceResolution(300);
input.DeNoise();

// Perform OCR
var result = ocr.Read(input);
Console.WriteLine($"Recognized Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr

' Initialize IronOCR with custom trained data
Dim ocr As New IronTesseract()

' Load your custom trained font
ocr.UseCustomTesseractLanguageFile("path\to\AMGDT.traineddata")

' Configure for optimal results
ocr.Configuration.BlackListCharacters = ""
ocr.Configuration.WhiteListCharacters = ""
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd

' Process an image with your custom font
Using input As New OcrInput()
    input.LoadImage("test-image-with-amgdt-font.png")

    ' Optional: Apply filters if needed
    input.EnhanceResolution(300)
    input.DeNoise()

    ' Perform OCR
    Dim result = ocr.Read(input)
    Console.WriteLine($"Recognized Text: {result.Text}")
    Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
$vbLabelText   $csharpLabel

Aby wdrożyć niestandardowe czcionki w aplikacjach produkcyjnych, zapoznaj się z naszym przewodnikiem dotyczącym korzystania z niestandardowych plików językowych.

Więcej informacji i materiałów referencyjnych można znaleźć w samouczku: film na YouTube

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.

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 5,571,678 | Wersja: 2026.4 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.