Ö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.
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=turEğ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şım | Ne zaman kullanılır | Gereken veri | Süre |
|---|---|---|---|
İnce ayar (FINETUNE_TYPE=1) | Aynı yazı sistemi, yeni yazı tipi veya alan sözlüğü | 1.000–5.000 satır | Saatler |
Üst katmanı kesme (FINETUNE_TYPE=2) | Aynı yazı sistemi, belirgin biçimde farklı glifler | 5.000–20.000 satır | Saatler–günler |
| Sıfırdan eğitim | Yeni yazı sistemi veya çok farklı alfabe | 50.000+ satır | Gü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.
- Linux ortamı — yerel veya Windows'ta WSL2. macOS eğitim için desteklenmez.
git,make,pkg-config,automakeve bir C++ araç zinciri.libtesseract-devvelibleptonica-dev(eğitim ikili dosyaları bunlara bağlanır).tesstraindeposu, ayrıcalangdata_lstmve birtessdata_bestbaşlangıç modeli.
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 indirirDoğ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.
# 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ğitim yazı tiplerini ortama kurun; tam aile adını
--font'a verin. - İnce ayarda, çıktı katmanının eşleşmesi için başlangıç modelinin
unicharset'ini koruyun. - Yeni bir yazı sistemi için unicharset'i doğru verinizden türetin, böylece her glif temsil edilsin.
- Gerçek belgeler içeriyorsa noktalama, rakam ve büyük/küçük harfleri dahil edin; aksi halde model bunları atar.
Eğitimi çalıştırma
Tek bir komut tüm Makefile ardışık düzenini yürütür.
make training \
MODEL_NAME=myfont \
START_MODEL=tur \
TESSDATA_PREFIX=../tessdata_best \
MAX_ITERATIONS=10000| Değişken | Anlamı | Tipik değer |
|---|---|---|
START_MODEL | Devam edilecek model (ince ayar) | eng, tur… |
TESSDATA_PREFIX | Başlangıç modelini içeren dizin | ../tessdata_best |
MAX_ITERATIONS | Eğitim adımları üst sınırı | 10000–100000 |
LEARNING_RATE | Adım boyutu; ince ayarda küçük olması daha güvenlidir | 0.0001–0.001 |
FINETUNE_TYPE | 0 sıfırdan, 1 ince ayar, 2 üst katmanı kesme | 1 |
NET_SPEC | Ağ mimarisi belirtimi | varsayılan bırakın |
RATIO_TRAIN | Eğitim/doğrulama bölünmesi | 0.9 |
TARGET_ERROR_RATE | Erken durdurma CER hedefi | 0.01 |
Kontrol noktaları, stop_training ve best vs fast
- tesstrain düzenli kontrol noktaları yazar (ör.
myfont_checkpoint); bunları değerlendirebilir veya sürdürebilirsiniz. - Çıktı dizininde bir
stop_trainingdosyası oluşturarak eğitimi bir sonraki yinelemede temiz biçimde bitirin. - Bir kontrol noktasını, eğitim araçlarındaki
combine_tessdata -e/convert_to_intile kullanılabilir bir modele dönüştürün. - best modeller en doğrudur; fast modeller daha küçük ve hızlıdır. Doğruluk önemliyse
tessdata_best'ten ince ayar yapın.
Değerlendirme: lstmeval ile karakter hata oranı
Modeli hiç görmediği verilerle değerlendirin.
lstmeval --model data/myfont_checkpoint \
--traineddata ../tessdata_best/tur.traineddata \
--eval_listfile data/myfont-ground-truth/eval_files.txtAyrı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.
# 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 myfontModelinizi bir temel dille birleştirebilirsiniz, ör. -l myfont+tur. Python'da aynı değeri pytesseract'a verin; Python kılavuzuna bakın.
Sorun giderme
| Belirti | Neden | Çözüm |
|---|---|---|
| Hatalı kutular / hizasız doğru veri | Yanlış yazı tipi metrikleri veya çok büyük satır görüntüleri | Doğru --font ve --ptsize ile yeniden üretin; birkaç görüntüyü gözle kontrol edin. |
| Çıktıda eksik karakterler | unicharset'te olmayan karakter | Glifleri doğru verinize ekleyin ve unicharset'i yeniden oluşturun. |
| Kayıp ıraksıyor / NaN | Öğrenme oranı çok yüksek | LEARNING_RATE'i düşürün ve önceki bir kontrol noktasından devam edin. |
| Bellek yetersiz (OOM) | RAM/GPU için parti çok büyük | BATCH_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ükseliyor | Aşırı öğrenme | Daha 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.