OCR românesc pentru documente vechi — Tesseract 5 cu 95% acuratețe
Ghid tehnic: cum digitalizezi documente vechi de primărie cu OCR românesc. Tesseract 5, pre-procesare imagine, corectare diacritice.
Optical Character Recognition (OCR) transformă documente scanate în text căutabil. Pentru primării, aceasta este cheia digitalizării arhivelor cu 50.000-500.000 pagini acumulate în decenii. Cu Tesseract 5 și optimizări pentru română, se pot obține 95-98% acuratețe pe documente curate.
De ce e diferit OCR-ul pentru română
Limba română are caractere specifice:
- Diacritice: ă, â, î, ș, ț
- Ambiguități: u și v confuzate în documente vechi
- Ligaturi în scriere gotică (documente pre-1900)
- Diferență între ș/ș (comma-below vs cedilla)
OCR-ul generic pentru engleză produce erori masive pe română. Este esențial dicționarul + modelul de limbă românesc.
Tesseract 5 — instalare + antrenare
Tesseract 5 este open-source (Google), cu suport LSTM neural network pentru acuratețe mult mai mare vs versiuni vechi.
# Ubuntu/Debian
sudo apt install tesseract-ocr tesseract-ocr-ron
# Verificare
tesseract --list-langs | grep ron
Modelul ron.traineddata este oficial mentenanță de Google + comunitate. Poate fi ajustat pentru domeniu specific (documente juridice, medicale, etc.).
Pre-procesare imagine (critic!)
Calitatea OCR depinde 60% de calitatea imaginii de intrare. Pași obligatorii:
- Deskew: îndreptare imagine dacă e scanată strâmb (max 1° rotație)
- Denoise: eliminare zgomot din scanare
- Binarize: alb-negru cu threshold Otsu (optim automat)
- Sharpen: creștere contrast marginile literelor
- DPI: 300+ DPI pentru text mic, 600 DPI pentru arhive vechi
import cv2
img = cv2.imread('document.png', cv2.IMREAD_GRAYSCALE)
img = cv2.medianBlur(img, 3) # denoise
_, img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
Rulare OCR + parametri optimi
tesseract document.png output -l ron --psm 3 --oem 3
# --psm 3 = automatic page segmentation
# --oem 3 = LSTM neural network (default in v5)
PSM (Page Segmentation Mode) importante:
--psm 3: pagină generală (default)--psm 6: bloc uniform de text--psm 11: text sparse pe imagine--psm 13: linie unică raw
Post-procesare — corectare diacritice
Chiar și cu modelul RO, unele confuzii apar:
- ș → s, ț → t (lipsa diacriticelor)
- u ↔ v (documente vechi)
- 1 ↔ l ↔ I
- O ↔ 0
Soluții:
- Dicționar termeni juridici RO (fraze frecvente în documente primărie)
- Distanță Levenshtein la termeni cunoscuți
- Context (dacă apare "județul", următorul token e probabil un județ)
- Modele de limbă (LLM) pentru corectare finală
Acuratețe realistă
| Tip document | Acuratețe |
|---|---|
| PDF text scanat modern (Word print) | 98-99% |
| Scanare buletin/CI/pașaport | 95-98% |
| Formulare tipizate primărie | 92-97% |
| Registre vechi mașină de scris | 85-92% |
| Documente handwritten (manuscris) | 50-70% |
| Documente pre-1950 (fonturi vechi) | 40-70% |
Indexare full-text în Elasticsearch
După OCR, textul se indexează pentru căutare rapidă:
- Tokenizare cu analizor românesc (stemming: "pădure", "păduri" → "pădure")
- Eliminare stop words RO (a, de, la, în, cu, etc.)
- Fuzzy match (permite typo: "urbansim" match "urbanism")
- Search wildcards (
certifi*match certificat, certificate)
Timp de procesare
- OCR pe 1 pagină A4 300 DPI: 2-5 secunde
- Pre-procesare imagine: 0.5-1 sec
- Indexare Elasticsearch: 0.2 sec
Pentru 100.000 pagini: aprox 100-150 ore (2 săptămâni pe un server multi-core).
Costuri
- Tesseract 5: gratuit (open-source Apache 2.0)
- Server OCR (16 GB RAM, 8 cores): ~500-1000 EUR/lună cloud sau one-time hardware
- Servicii cloud OCR (Google Vision, AWS Textract): 0.5-3 USD per 1000 pagini
Vezi soluția City-App DMS cu OCR românesc sau ghidul DMS complet.
Vrei să implementezi asta în primăria ta?
Consultanță gratuită, demo personalizat și estimare buget. Răspundem în 24 de ore.