Tesseract 5를 사용하여 C#에서 커스텀 폰트를 훈련하는 방법
기본 Tesseract 영어 모델은 병원 수기 접수 양식, 고전 책 디지털화, 게임 스튜디오의 맞춤형 장식 글꼴, 일반 OCR 엔진이 본 적 없는 산업별 기호 등의 많은 실제 입력을 오독합니다. 해결 방법은 정확한 글꼴로 Tesseract를 직접 훈련시켜, IronOCR이 실행되는 모든 곳에 배포할 수 있는 단일 .traineddata 아티팩트를 생성하는 것입니다.
이 가이드는 C#을 사용하여 Tesseract 5 사용자 정의 글꼴 훈련 과정을 처음부터 끝까지 안내합니다: WSL2 Ubuntu 툴체인을 설치하고, .box 및 .tif 훈련 파일을 .ttf 또는 .otf에서 .ttf 또는 .otf 훈련 파일을 렌더링하고, 기본 eng.traineddata을 기준으로 tesstrain을 사용하여 .traineddata 모델을 구축한 다음, 그 결과를 IronOCR에 로드하는 과정을 다룹니다. 훈련이 완료되면 파일은 Windows, MacOS, Linux, Docker에서 이식 가능합니다.
빠른 시작: C#에서 훈련된 폰트 파일 사용
UseCustomTesseractLanguageFile을 훈련된 .traineddata 파일에 지정하여 IronOCR을 구성한 후, 기본 언어 팩을 사용할 때와 마찬가지로 모든 이미지에 대해 Read을 호출하십시오.
-
NuGet 패키지 관리자를 사용하여 https://www.nuget.org/packages/IronOcr 설치하기
PM > Install-Package 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; -
실제 운영 환경에서 테스트할 수 있도록 배포하세요.
무료 체험판으로 오늘 프로젝트에서 IronOCR 사용 시작하기
최소 워크플로우(5단계)
- 사용자 정의 훈련된 폰트로 읽기 위해 NuGet을 통해 IronOCR 다운로드
- WSL2 Ubuntu에 Tesseract 5를 설치하고
tesstrain훈련 리포지토리를 클론합니다 - 귀하의 대상 폰트에 대해
split_training_text.py로 교육 파일을 생성하십시오. tesstrain및 기반 언어 모델을 사용하여 사용자 정의.traineddata파일을 빌드하십시오.UseCustomTesseractLanguageFile및Read을 호출하여 IronOCR에 훈련된 파일을 로드합니다.
교육 환경을 어떻게 설정합니까?
IronOCR을 어떻게 설치하나요?
NuGet을 통해 IronOCR을 설치하세요:
Install-Package IronOcr
DLL 패키지는 NuGet을 사용할 수 없는 경우 수동 대안입니다. 기본 엔진에 대한 자세한 내용은 Tesseract 5 기능 가이드 및 사용자 정의 언어 참조를 참조하십시오.
WSL2 및 Ubuntu를 어떻게 설치하고 설정합니까?
WSL2 및 Ubuntu 설정 방법 에 대한 튜토리얼을 참조하십시오.
WSL2만 있으면 충분합니다. 훈련이 완료되면, 생성된 .traineddata 파일은 Windows, macOS, Linux 또는 Docker에서 IronOCR 앱과 함께 제공됩니다. 배포 세부 정보는 Linux 배포 가이드를 참조하세요.
Ubuntu에 Tesseract 5를 어떻게 설치합니까?
Tesseract 5를 설치하려면 다음 명령어를 사용하십시오.
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
tesseract-ocr 패키지는 인식 기능을 실행하는 엔진입니다; libtesseract-dev은 tesstrain이 모델을 구축하는 데 필요한 헤더를 노출합니다. 훈련된 파일이 사용 중일 때, Tesseract 구성 가이드는 실행 시간 조정을 다룹니다.
교육을 위해 폰트를 어떻게 준비합니까?
어떤 폰트를 다운로드해야 하나요?
이 튜토리얼에서는 .ttf 또는 .otf 형식의 AMGDT 글꼴을 사용합니다.

교육할 폰트를 선택할 때:
- 기본 영어 모델이 이미 잘못 읽는 폰트를 선택하십시오. 이미 인식된 폰트를 훈련시키는 것은 시간 낭비입니다.
.traineddata이 애플리케이션과 함께 배포될 경우, 해당 글꼴의 라이선스가 재배포를 허용하는지 확인하십시오.- 장식적이고 손으로 쓴 폰트 및 산업별 폰트(의료, 법률, 지도)는 교육을 통해 가장 정확성을 얻습니다.
- 교육 샘플을 실제로 볼 수 있는 환경(해상도 및 조명 포함)과 일치하게 만드십시오.
디스크 드라이브를 어떻게 마운트합니까?
작업 공간으로 드라이브 D:를 마운트하십시오:
cd /
cd /mnt/d
cd /
cd /mnt/d
WSL2는 모든 Windows 드라이브를 /mnt/
폰트 파일을 우분투 폰트 폴더에 어떻게 복사합니까?
Tesseract는 교육 이미지를 빌드하기 위해 귀하의 폰트로 샘플 텍스트를 렌더링하므로 폰트는 Windows에만 설치될 수 없습니다. Linux 쪽에도 설치되어야 합니다. 폰트 파일을 우분투 폰트 디렉토리인 /usr/share/fonts와 /usr/local/share/fonts에 복사하세요. 가장 간단한 방법은 파일 탐색기의 주소 표시줄에 \wsl$를 입력하여 Windows에서 Ubuntu 파일 시스템을 탐색한 다음, .ttf를 드래그하여 옮기는 것입니다.

폰트 복사가 우분투 폰트 디렉터리에 도착한 후 어떻게 보여야 하는지:
목적지 폴더 액세스가 거부되면 어떻게 하나요?
파일 탐색기가 복사를 거부하면, 대신 루트 셸에서 실행하세요:
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
GitHub에서 교육 저장소를 어떻게 복제합니까?
교육 파이프라인은 세 개의 저장소에 의존합니다. 먼저 튜토리얼 래퍼를 복제한 다음 그 안에 두 개의 상위 Tesseract 저장소를 복제한 다음 출력 폴더를 만드십시오:
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은 각 교육 단계(텍스트 생성, 이미지 렌더링, 교육 쌍 생성)를 실행하는 Python 스크립트와 구성 파일을 번들로 제공합니다.
- tesstrain은 실제 교육 실행을 추진하는 Makefile을 포함합니다.
- Tesseract에는 사용자 지정 훈련의 시작 모델로 사용되는 기본
.traineddata파일이 포함된 tessdata 폴더가 있습니다. - tesstrain/data는 생성된
.box파일(문자 경계 상자),.tif이미지 및 중간 LSTM 체크포인트가 모두 저장되는 위치입니다.
터미널에서 복제 시퀀스가 어떻게 보여야 하는지:
사용자 정의 언어와 함께 여러 언어 팩을 작업하는 방법은 국제 언어 가이드를 참조하세요.
훈련 파일을 어떻게 생성합니까?
split_training_text.py 스크립트를 어떻게 실행합니까?
Tesseract_tutorial 폴더에서 실행하십시오:
python split_training_text.py
python split_training_text.py
이 스크립트는 훈련 샘플 하나당 .box / .tif 쌍을 하나씩 생성하여 데이터 폴더에 기록합니다.
스크립트 실행이 훈련 쌍을 생성하는 모습을 다음과 같이 보여야 합니다:
Fontconfig 경고를 어떻게 수정합니까?

Fontconfig warning: "/tmp/fonts.conf, line 4: 빈 폰트 디렉토리 이름 무시됨"이라는 경고가 표시되면, fontconfig는 폰트 디렉토리를 해결할 수 없습니다. 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>
/etc/fonts로 복사하세요:
cp fonts.conf /etc/fonts
cp fonts.conf /etc/fonts
그런 다음 split_training_text.py를 동일한 경로로 지정하십시오:
fontconf_dir = '/etc/fonts'
fontconf_dir = '/etc/fonts'
얼마나 많은 훈련 파일을 생성해야 하나요?
기본적으로 스크립트는 100개의 훈련 쌍을 생성합니다. split_training_text.py 상단 부근의 개수 표시를 변경하십시오:

크기 지침:
- 파이프라인이 끝에서 끝으로 작동하는지 확인하기 위해 100-500개의 샘플이 충분합니다.
- 1000-5000개의 샘플은 생산 정확성을 위한 작업 범위입니다.
- 훈련 텍스트는 귀하의 폰트가 인식해야 하는 모든 문자를 커버해야 하며, 이상적으로는 각각 여러 번 인식해야 합니다.
- 더 많은 샘플은 더 많은 교육 시간을 의미합니다; 목표 정확도를 달성하기 위해 가장 적은 개수를 선택하십시오.
eng.traineddata 파일을 어디에서 다운로드하나요?
tessdata_best 저장소에서 eng.traineddata을 다운로드하여 Tesseract_tutorial/tesseract/tessdata에 배치하십시오.
기본 모델은 교육자에게 언어적 문맥을 제공합니다(어떤 문자 시퀀스가 그럴듯한 단어를 형성하는지), 따라서 처음부터 학습하는 것보다 정확도가 훨씬 좋습니다. 교육 텍스트와 같은 언어의 기본 모델을 선택하십시오. 문제가 발생하면, 사용자 정의 OCR 언어 팩 문제 해결 가이드를 참조하십시오.
내 사용자 정의 폰트 훈련 데이터 파일을 어떻게 빌드합니까?
tesstrain 폴더에서 실행합니다:
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은 귀하의 사용자 정의 폰트 이름입니다 (출력 파일 이름에 사용됩니다).
- START_MODEL은 위에서 다운로드한 기본
.traineddata입니다. - MAX_ITERATIONS는 훈련 실행의 최대치를 제한합니다; 높은 값은 일반적으로 오류율을 줄입니다.
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
패치는 Makefile을 실제 출력 디렉터리에 포인트하여 사전 파일을 찾을 수 있도록 합니다.
"스크립트 유니카셋 로드 실패" 오류를 어떻게 해결하나요?
langdata_lstm에서 Latin.unicharset을 다운로드하여 tesstrain/data/langdata 폴더에 저장하십시오.
.unicharset 파일은 트레이너가 출력할 수 있는 문자를 정의합니다. 사용 중인 글꼴의 모든 문자를 포함하는 파일을 사용하십시오. 예를 들어 키릴 문자 글꼴의 경우 Cyrillic.unicharset, 데바나가리 문자 글꼴의 경우 Devanagari.unicharset를 사용하십시오.
tesstrain이 .traineddata 파일을 생성할 때 성공적인 훈련 실행 결과는 다음과 같아야 합니다:
훈련된 데이터 파일의 정확성을 어떻게 확인합니까?
1,000개의 .box 및 .tif 파일과 3,000회의 훈련 반복을 통해, 출력 AMGDT.traineddata은 약 5.77%의 훈련 오류율(BCER)을 달성했습니다.

IronOCR로 훈련된 모델을 테스트하려면 UseCustomTesseractLanguageFile을(를) 파일에 지정하고 샘플 이미지를 읽어보세요:
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
Confidence 속성은 문서별 점수입니다; 깨끗한 입력에서도 낮은 수준으로 유지되면 가장 일반적인 원인은 훈련 샘플이 너무 적거나 스크립트와 일치하지 않는 기본 모델입니다. .traineddata이 검증되면, 사용자 정의 언어 파일을 로드하는 일반적인 워크플로에 대해서는 사용자 정의 언어 가이드를 참조하십시오.
사용자 정의 폰트 훈련에 대한 주요 내용을 무엇입니까?
사용자 지정 글꼴 훈련은 일회성 설정입니다. 대상 글꼴에서 .box / .tif 쌍을 생성하고, tesstrain을 사용하여 .traineddata 모델을 구축한 다음, UseCustomTesseractLanguageFile을 통해 모델을 로드합니다. 그곳에서 IronOCR은 새 모델로 이미지를 읽으며, 주식 영어를 읽는 것과 정확히 동일합니다.
사용자 정의 Tesseract 모델과 함께 IronOCR을 사용하는 주요 장점:
- 표준 Tesseract 아티팩트를 재사용합니다: tesstrain으로 빌드할 수 있는 모든
.traineddata파일은 변환 과정 없이 IronOCR에서 바로 사용할 수 있습니다. - 크로스 플랫폼 출력: 교육은 Linux(또는 WSL2)가 필요하지만 훈련된 파일은 Windows, macOS, Linux 및 Docker에서 애플리케이션과 함께 발송됩니다.
- 나머지 API와 함께 드롭인: 사용자 정의 폰트를 다중 보조 언어, 이미지 품질 보정, DPI 조정과 결합하여 인식 경로를 변경하지 않고 사용할 수 있습니다.
- 조정 가능한 정확도: 오류율은 훈련 샘플 수와 반복 횟수의 함수입니다. 두 가지 조정 매개변수(스크립트의 샘플 수와
MAX_ITERATIONS)가 모두 노출되어 있으므로, Tesseract를 벗어나지 않고도 훈련 시간과 BCER 간의 균형을 조정할 수 있습니다.
더 큰 파이프라인의 경우, 훈련된 모델을 여러 문서에 적용할 때 진행 상황 추적 및 비동기 처리를 고려하십시오.
자주 묻는 질문
C#에서 사용자 지정 학습 글꼴 파일을 사용하는 방법은 무엇인가요?
사용자 지정으로 학습시킨 Tesseract 글꼴 파일을 IronOCR에서 사용하려면 몇 줄의 코드만 있으면 됩니다. IronTesseract 인스턴스를 생성하고, .traineddata 파일의 경로를 UseCustomTesseractLanguageFile() 메서드에 전달한 다음, Read() 메서드를 사용하여 특수 글꼴이 포함된 이미지에 OCR을 수행하면 됩니다.
OCR용 사용자 지정 글꼴 학습에 필요한 요구 사항은 무엇입니까?
사용자 지정 글꼴 학습을 위해서는 Linux 환경(Windows 사용자의 경우 Ubuntu가 포함된 WSL2 권장), 개발 라이브러리가 설치된 Tesseract 5, 그리고 학습할 글꼴 파일(.ttf 또는 .otf 형식)이 필요합니다. Linux에서 생성된 .traineddata 파일은 모든 플랫폼에서 IronOCR과 원활하게 연동됩니다.
표준 OCR을 사용하는 대신 사용자 지정 글꼴을 학습시켜야 하는 이유는 무엇입니까?
사용자 지정 글꼴을 학습시키면 특정 글꼴, 특히 표준 Tesseract 모델과 크게 다른 장식용 또는 특수 글꼴에 대한 OCR 정확도가 향상됩니다. IronOCR은 이렇게 학습된 글꼴 파일을 사용하여 표준 OCR 모델로는 읽기 어려웠던 특수 글꼴이 포함된 이미지의 텍스트를 정확하게 인식할 수 있습니다.
사용자 지정으로 학습된 글꼴을 여러 플랫폼에서 사용할 수 있나요?
네, 학습 과정에는 Linux가 필요하지만, 생성된 .traineddata 파일은 IronOCR의 모든 플랫폼에서 문제없이 작동합니다. 즉, Linux에서 한 번 학습을 완료하면 Windows, macOS, Linux 등 어떤 환경에서도 학습된 데이터 파일을 사용할 수 있습니다.
처음 설치할 때 권장되는 방법은 무엇인가요?
빠른 설치를 위해 IronOCR DLL을 직접 다운로드하거나 NuGet 패키지 관리자를 통해 설치할 수 있습니다. NuGet은 종속성을 자동으로 처리하고 업데이트를 간편하게 해주므로 권장됩니다. IronOCR은 Tesseract 5의 다양한 기능과 사용자 정의 언어 구현을 완벽하게 지원합니다.
IronOCR 다국어를 지원합니까?
IronOCR은 여러 언어를 지원하여 다양한 언어의 텍스트 인식을 필요한 글로벌 애플리케이션에서 다양하게 사용할 수 있는 도구입니다.
IronOCR을 기존 애플리케이션에 통합할 수 있습니까?
IronOCR은 C#을 사용하여 쉽게 기존 애플리케이션에 통합되도록 설계되어 있어 개발자가 최소한의 노력으로 소프트웨어에 OCR 기능을 추가할 수 있습니다.
문서 관리에 IronOCR을 사용하는 이점은 무엇입니까?
IronOCR을 문서 관리를 위해 사용하면 스캔된 문서를 검색 및 편집 가능한 텍스트로 변환하여 수동 데이터 입력의 필요성을 줄이고 문서 접근성을 향상시킵니다.
IronOCR이 데이터 정확성을 어떻게 향상시킬 수 있습니까?
IronOCR은 고급 인식 알고리즘과 이미지 보정 기능을 통해 데이터 정확성을 향상시켜 텍스트 추출 프로세스를 신뢰할 수 있고 정확하게 보장합니다.
IronOCR의 무료 체험판이 있나요?
네, Iron Software는 IronOCR의 무료 체험판을 제공하여 사용자가 구매 결정을 내리기 전에 기능과 성능을 테스트해볼 수 있습니다.

