DBNet (PaddleOCR) vs Tesseract LSTM kis callout-detektálásra#
A tanulság#
A Tesseract LSTM fundamentálisan rosszul detektál ~5-10 pixeles izolált digit-eket sűrű technical drawing-on. A DBNet (Differentiable Binarization) szegmentációs alapú detektor — pixel-level binary maszkokat tanul a polygon-bound-okra — sokkal robosztusabb.
95% → 98% match-arány Makita 1002BA exploded view-on, csak az OCR-engine cseréje (Tesseract-tal a meglévő multi-validation mellé).
Why#
Tesseract LSTM: - Layout-analízis alapú (PSM 11 "sparse text" — strukturális assumptions a sorokra) - Egyetlen detektor + recognizer kombinálva - Vékony "1" vagy összetapadt "10" digiteket gyakran elveszít
DBNet (PaddleOCR PP-OCRv3 server-det 84MB): - Pixel-szintű szegmentáció → minden dark-blob önálló detection - Külön detektor (DBNet) + külön recognizer (CRNN) - Robosztusabb a sűrű clusterekre és vékony vonalakra - Cluster-elhelyezkedéstől függetlenül detektál
NotebookLM Q1 forrás-idézettel (docs/notebooklm-q1-best-free-ocr-2026-05-12.md):
"A hagyományos Tesseracttal szemben mindkét rendszer a DBNet detektálási architektúrát használja [1, 2]. A DBNet kifejezetten jól kezeli a bonyolult hátterű, szabálytalan elrendezésű, apró objektumokat (mint a mutatóvonalak végén álló számok) és nagyon precíz poligonális határoló dobozokat (bounding boxokat) generál."
How to apply#
Install (egyszerre Tesseract MELLÉ, nem helyett):
.venv/bin/pip install 'paddleocr<3' 'paddlepaddle<3'
# v2.10.0 + paddlepaddle 2.6.2 — NEM v3.5.0 (PIR/oneDNN CPU runtime bug)
Kritikus konfig (NotebookLM Q1 KEY felfedezés):
from paddleocr import PaddleOCR
ocr = PaddleOCR(
use_angle_cls=False,
lang='en',
det_limit_side_len=4096, # ⚠️ KULCSPARAM — default 960 px
det_db_thresh=0.3,
det_db_box_thresh=0.6,
show_log=False,
)
Mit csinál a det_limit_side_len=4096: A deep-learning OCR motorok a bemeneti képet hardveres okokból leméretezik (default 960 px-re a leghosszabb oldalon). Egy nagy-felbontású (4000+ px) műszaki rajzon ez a 5-10 px-es callout-digiteket fizikailag eltünteti a downsampling alatt. A 4096-os limit megőrzi az eredeti felbontást.
Integráció pattern: PaddleOCR-t mint 2nd opinion validator a meglévő Tesseract multi-pass pipeline mellé. A találatok ugyanabba a spatial-voting cluster-be mennek, source-tag "paddleocr/PP-OCRv3". Magasabb confidence + NMS overlap-resolution.
Lazy singleton init — modellek (~165 MB total) első futtatásra letöltődnek /root/.paddleocr/-be, utána re-use.
Mit NEM old meg#
- A C-prefix vagy section-arrow callout-ok (pl. KGC-rajz "C10", "D10") — ezek inkluzív inclusion-codes, NINCSENEK vizuálisan a rajzon → DBNet sem találja meg, csak manual pozicionálás.
- Letter-only marker (pl. "A" szekció-arrow Makita 1002BA-on) — DBNet a digit-only allowlist miatt kihagyja, külön letter-pass-szal kell.
PaddleOCR v3.5.0 PIR/oneDNN bug#
TILOS a v3.5.0-t CPU-n — ConvertPirAttribute2RuntimeAttribute not support runtime error az új PIR executor + oneDNN combo miatt. Workaround: downgrade v2.10.0-ra (pip install 'paddleocr<3' 'paddlepaddle<3'). v2 stabil, modell-pipeline (det+rec) változatlan, EREDMÉNY IS IDENTIKUS.
Validálás#
Pipeline progresszió Makita 1002BA-n: - Baseline (Tesseract single-pass PSM 11): 60% - + Multi-validation (6 variant × 3 PSM + patch-based + super-resolution + min_votes=1): 95% - + PaddleOCR DBNet 2nd-opinion (det_limit_side_len=4096): 98% (65/66 numeric)
006, 007 callout-okat amiket Tesseract minden konfigon eltüntetett, PaddleOCR megtalálta. Az utolsó 1 maradék (021) az NMS overlap-resolution-nak köszönhetően single-pass-out maradt.
Kapcsolódó#
- 02-Projects/robbantott-kereso — implementáció
docs/notebooklm-q1-best-free-ocr-2026-05-12.md— eredeti research-Q + idézetek- NotebookLM notebook
b82bec2c-bb92-463f-93d4-5c4a675163a1— 220 source library