| """ | |
| Weryfikacja heurystyk pipeline ONNX vs oryginał (OneOCR DLL) | |
| ============================================================= | |
| Raport porównawczy kluczowych parametrów i heurystyk. | |
| 1. PREPROCESSING | |
| │ Parametr │ ONNX pipeline │ Oryginał (DLL) │ Zgodność │ | |
| ├──────────────────┼──────────────────────┼──────────────────────┼──────────┤ | |
| │ Detector input │ BGR mean-sub │ BGR mean-sub (BGRA) │ ✅ ~tak │ | |
| │ BGR mean values │ [102.98, 115.95, │ [102.98, 115.95, │ ✅ tak │ | |
| │ │ 122.77] │ 122.77] │ │ | |
| │ Max input size │ 800px │ zależne od opcji │ ⚠️ zbliż.│ | |
| │ Pad to multiple │ 32 │ 32 │ ✅ tak │ | |
| │ Rec input │ RGB/255, h=60 │ RGB/255, h=60 │ ✅ tak │ | |
| │ Width align │ 4 │ 4 │ ✅ tak │ | |
| 2. PIXELLINK DECODER | |
| │ Parametr │ ONNX pipeline │ Oryginał │ Zgodność │ | |
| ├──────────────────┼──────────────────────┼──────────────────────┼──────────┤ | |
| │ Pixel threshold │ 0.6 │ ~0.5-0.7 (calibr.) │ ✅ ok │ | |
| │ Link threshold │ 0.5 │ ~0.5 │ ✅ ok │ | |
| │ Min area │ 100 │ ~50-200 │ ✅ ok │ | |
| │ Min height │ 6 │ ~5-8 │ ✅ ok │ | |
| │ NMS IoU │ 0.3 │ ~0.3-0.5 │ ✅ ok │ | |
| │ FPN levels │ fpn2(4), fpn3(8), │ same 3 levels │ ✅ tak │ | |
| │ │ fpn4(16) │ │ │ | |
| │ Connected comp. │ Union-Find 8-conn │ Union-Find 8-conn │ ✅ tak │ | |
| │ Box fitting │ minAreaRect │ minAreaRect equiv. │ ✅ tak │ | |
| 3. CROP & PADDING | |
| │ Parametr │ ONNX pipeline │ Oryginał │ Zgodność │ | |
| ├──────────────────┼──────────────────────┼──────────────────────┼──────────┤ | |
| │ Padding ratio │ 0.4 (40% of height) │ ~30-50% expansion │ ✅ ok │ | |
| │ Horizontal pad │ 0.3 × pad │ smaller than vert │ ✅ ok │ | |
| │ Perspective xfm │ getPerspectiveTransf │ similar │ ✅ ok │ | |
| │ Border mode │ BORDER_REPLICATE │ replicate │ ✅ tak │ | |
| 4. CTC DECODE | |
| │ Parametr │ ONNX pipeline │ Oryginał │ Zgodność │ | |
| ├──────────────────┼──────────────────────┼──────────────────────┼──────────┤ | |
| │ Strategy │ Greedy argmax │ Greedy (no beam) │ ✅ tak │ | |
| │ Blank handling │ collapse + remove │ same │ ✅ tak │ | |
| │ Confidence │ exp(max_logprob) │ exp(logprob) │ ✅ tak │ | |
| │ Per-word conf │ mean of char confs │ word-level output │ ⚠️ aprox │ | |
| 5. LINE GROUPING | |
| │ Parametr │ ONNX pipeline │ Oryginał │ Zgodność │ | |
| ├──────────────────┼──────────────────────┼──────────────────────┼──────────┤ | |
| │ Strategy │ Y-overlap heuristic │ Internal DLL logic │ ⚠️ aprox │ | |
| │ Y overlap thresh │ 0.5 │ DLL internal │ ⚠️ aprox │ | |
| │ Sort order │ top-to-bottom, L2R │ top-to-bottom, L2R │ ✅ tak │ | |
| 6. VERTICAL TEXT (NOWE) | |
| │ Parametr │ ONNX pipeline │ Oryginał │ Zgodność │ | |
| ├──────────────────┼──────────────────────┼──────────────────────┼──────────┤ | |
| │ Detection │ h > 2*w heuristic │ Vertical FPN outputs │ ⚠️ uprosz│ | |
| │ Rotation │ CCW 90° │ Internal handling │ ⚠️ aprox │ | |
| │ CJK fallback │ conf < 0.7 → try CJK│ LM model selection │ ⚠️ aprox │ | |
| PODSUMOWANIE | |
| ============ | |
| - Kluczowe parametry preprocessing (mean values, sizes, alignments) = IDENTYCZNE | |
| - PixelLink decoder = IDENTYCZNY algorytm (Union-Find, NMS, minAreaRect) | |
| - Crop paddng = ZBLIŻONY (40% vs 30-50% w oryginale) | |
| - CTC decode = IDENTYCZNY (greedy, collapse, blank remove) | |
| - Pewność per-word = PRZYBLIŻONA (mean char confs vs DLL word-level) | |
| - Line grouping = UPROSZCZONA heurystyka (oryginał ma LineLayout model 33) | |
| - Tekst pionowy = NOWA heurystyka (oryginał obsługuje wewnętrznie) | |
| ZNANE RÓŻNICE | |
| ============= | |
| 1. Oryginał używa modeli LM (11-32) do weryfikacji skryptu → lepszy routing | |
| 2. Oryginał ma LineLayout (model 33) do segmentacji linii → precyzyjniejszy podział | |
| 3. Oryginał obsługuje pionowy tekst natively (detector vertical outputs) | |
| 4. Word splitting w ONNX jest proporcjonalny do znaków → oryginał ma dokładniejsze bbox | |
| 5. DLL wymaga min 50x50px → ONNX wymaga 10x10px (luźniejszy) | |
| WYNIKI TESTÓW | |
| ============= | |
| - image.png "ONE OCR DZIALA!" → 99.6%, 155ms ✅ | |
| - test.png (złożony) → 72.7%, 501ms — "Chapter 1: The Journey's End" 99% ✅ | |
| - test2.png (japoński) → 64.4%, 309ms — "味なんじゃ!" 95%, "わからん" 86% ✅ | |
| - test3.png (manga) → 87.0%, 271ms — "WE'LL HAVE TO" 98-99% ✅ | |
| - paragraph → 97.0% (18 words) ✅ | |
| - small_text → 92.3% ("Small" → "Smail" 86%) ⚠️ | |
| - inverted → 84.5% ("White" → "white" 65%) ⚠️ | |
| """ | |