Ana içeriğe geç
Geliştirici rehberi

Özel yazı tipleri ve verilerle
Tesseract eğitimi (tesstrain, v5).

tesstrain ile Tesseract 5 modellerini ince ayar yapıp eğitmek için test edilmiş, karar odaklı bir kılavuz: kaynaktan derleme, doğru veriyi hazırlama, make training çalıştırma, önemli değişkenleri ayarlama, lstmeval ile CER ölçme ve traineddata'yı dağıtma.

TL;DR — mevcut bir modelde ince ayar

Yazı sisteminiz zaten destekleniyorsa, ince ayar daha iyi bir modele giden en hızlı yoldur.

bash
git clone https://github.com/tesseract-ocr/tesstrain.git
cd tesstrain && make tesseract-langdata
# satır görüntüleri + .gt.txt dosyalarını data/myfont-ground-truth/ içine koyun
make training MODEL_NAME=myfont START_MODEL=tur

Eğitim, ikili yükleyiciler aracılığıyla kullanılamaz. Linux veya WSL2 gerekir. Kaynaktan derleme için kuruluma bakın.

Karar ağacı: ince ayar vs üst katmanı kesme vs sıfırdan eğitim

Doğru yaklaşımı seçmek günlerce boşa eğitimden tasarruf sağlar.

YaklaşımNe zaman kullanılırGereken veriSüre
İnce ayar (FINETUNE_TYPE=1)Aynı yazı sistemi, yeni yazı tipi veya alan sözlüğü1.000–5.000 satırSaatler
Üst katmanı kesme (FINETUNE_TYPE=2)Aynı yazı sistemi, belirgin biçimde farklı glifler5.000–20.000 satırSaatler–günler
Sıfırdan eğitimYeni yazı sistemi veya çok farklı alfabe50.000+ satırGünler

İşe yarayabilecek en hafif seçenekle başlayın, değerlendirin ve yalnızca CER kabul edilemezse bir üst seviyeye geçin. Özel yazı tipi sorunlarının çoğu ince ayarla çözülür.

Ön koşullar

Eğitim, paketlenmiş ikili dosya yerine kaynaktan derleme gerektirir.

bash
sudo apt update
sudo apt install -y git make automake pkg-config g++ \
  libleptonica-dev libtesseract-dev tesseract-ocr

git clone https://github.com/tesseract-ocr/tesstrain.git
cd tesstrain
make tesseract-langdata   # langdata_lstm + tessdata_best indirir

Doğru veriyi hazırlama

Doğru veri, tam metinleriyle eşleştirilmiş satır görüntüleridir.

tesstrain, data/<MODEL_NAME>-ground-truth/ içinde her metin satırı için bir görüntü bekler; her biri tam transkripsiyonu içeren bir .gt.txt dosyasıyla eşleşmelidir. text2image ile bir metin dosyasından ve yazı tipinden görüntüler üretin, uzun metinleri langdata_lstm içindeki split_training_text.py ile satırlara bölün.

bash
# Bir korpustan + yazı tipinden satır görüntüleri üretin
text2image --text=corpus.txt \
  --outputbase=data/myfont-ground-truth/myfont \
  --font='Özel Yazı Tipim' --fonts_dir=/usr/share/fonts \
  --ptsize=14

# text2image ayrıca .box dosyaları üretir; bunları .gt.txt'ye dönüştürün
# (tesstrain/training/ yardımcı betikler içerir veya doğruladıktan sonra yeniden adlandırın)

Ne kadar veri: ardışık düzeni doğrulamak için 100–500 satır, üretim için 1.000–5.000 satır. Doğruluk ham hacimden çok çeşitlilikten — farklı yazı tipleri, boyutlar, aralıklar ve gürültü — gelir.

Yazı tipleri ve unicharset seçimi

Karakter kümesi modelin göreceği her şeyi kapsamalıdır.

Eğitimi çalıştırma

Tek bir komut tüm Makefile ardışık düzenini yürütür.

bash
make training \
  MODEL_NAME=myfont \
  START_MODEL=tur \
  TESSDATA_PREFIX=../tessdata_best \
  MAX_ITERATIONS=10000
DeğişkenAnlamıTipik değer
START_MODELDevam edilecek model (ince ayar)eng, tur…
TESSDATA_PREFIXBaşlangıç modelini içeren dizin../tessdata_best
MAX_ITERATIONSEğitim adımları üst sınırı10000–100000
LEARNING_RATEAdım boyutu; ince ayarda küçük olması daha güvenlidir0.0001–0.001
FINETUNE_TYPE0 sıfırdan, 1 ince ayar, 2 üst katmanı kesme1
NET_SPECAğ mimarisi belirtimivarsayılan bırakın
RATIO_TRAINEğitim/doğrulama bölünmesi0.9
TARGET_ERROR_RATEErken durdurma CER hedefi0.01

Kontrol noktaları, stop_training ve best vs fast

Değerlendirme: lstmeval ile karakter hata oranı

Modeli hiç görmediği verilerle değerlendirin.

bash
lstmeval --model data/myfont_checkpoint \
  --traineddata ../tessdata_best/tur.traineddata \
  --eval_listfile data/myfont-ground-truth/eval_files.txt

Ayrılmış kümedeki CER'i izleyin. Düşmeyi bıraktığında — veya eğitim kaybı düşmeye devam ederken yükselmeye başladığında — aşırı öğrenme vardır; durun ve önceki kontrol noktasını kullanın.

Eğitilmiş modeli dağıtma

traineddata'yı kopyalayın, motoru ona yönlendirin ve test edin.

bash
# Bir tessdata dizinine kopyalayın
cp data/myfont.traineddata /usr/share/tesseract-ocr/5/tessdata/
# veya özel bir ön ek belirleyin
export TESSDATA_PREFIX=/yol/tessdata
tesseract ornek.png stdout -l myfont

Modelinizi bir temel dille birleştirebilirsiniz, ör. -l myfont+tur. Python'da aynı değeri pytesseract'a verin; Python kılavuzuna bakın.

Sorun giderme

BelirtiNedenÇözüm
Hatalı kutular / hizasız doğru veriYanlış yazı tipi metrikleri veya çok büyük satır görüntüleriDoğru --font ve --ptsize ile yeniden üretin; birkaç görüntüyü gözle kontrol edin.
Çıktıda eksik karakterlerunicharset'te olmayan karakterGlifleri doğru verinize ekleyin ve unicharset'i yeniden oluşturun.
Kayıp ıraksıyor / NaNÖğrenme oranı çok yüksekLEARNING_RATE'i düşürün ve önceki bir kontrol noktasından devam edin.
Bellek yetersiz (OOM)RAM/GPU için parti çok büyükBATCH_SIZE/ağ boyutunu küçültün veya daha fazla belleğe sahip bir makine kullanın.
Eğitim kaybı düşerken doğrulama CER'i yükseliyorAşırı öğrenmeDaha erken durun, daha çeşitli doğru veri ekleyin veya daha düşük öğrenme oranı kullanın.

Eğitim SSS

Tesseract'ı kaynaktan derlemeden eğitebilir miyim?

Hayır. Eğitim araçları ikili yükleyicilerde yer almaz; libtesseract-dev ve tesstrain deposuna sahip Linux veya WSL2 kullanın.

Kaç örnek gerekir?

Ardışık düzeni doğrulamak için yaklaşık 100–500 satır, üretim için 1.000–5.000 satır. İnce ayar, sıfırdan eğitimden daha az veri gerektirir.

İnce ayar mı sıfırdan eğitim mi?

Mevcut bir yazı sisteminde yeni yazı tipi veya sözlük için ince ayar; yalnızca tamamen yeni bir yazı sistemi için sıfırdan eğitim.

Eğitimi ne zaman durdurmalıyım?

Eğitim kaybı düzleştiğinde değil, ayrılmış doğrulama CER'i iyileşmeyi bıraktığında. Bu fark aşırı öğrenmedir.

Model nereye konur?

<MODEL_NAME>.traineddata'yı bir tessdata dizinine kopyalayın (veya TESSDATA_PREFIX ayarlayın) ve tesseract image.png stdout -l myfont çalıştırın.