Indra OCR Poneglyph - bubble OCR
Fine-tune of Datalab's Indra OCR (tag v1.1.0) for French One Piece speech bubbles, as used by Poneglyph in the browser. Two networks, unchanged in structure from Indra:
onnx/indra_det_bubble.onnx(390 kB): line detector, input a bubble crop at 0.75 x its size.onnx/indra_rec_bubble.onnx(5.0 MB): CTC recognizer, input the bubble's line windows side by side (one pass per bubble).onnx/browser_manifest.json: vocabulary, preprocessing constants and the text rules learned from training labels.
Test results (1,221 bubbles, page-level holdout)
| Pipeline | CER | Exact match |
|---|---|---|
| A: YOLO lines + PP-OCRv6 (production) | 0.902 % | 85.01 % |
| C: Indra det (fine-tuned) + Indra rec (fine-tuned) - this release | 0.690 % | 88.53 % |
| B: YOLO lines + Indra rec (fine-tuned) | 0.912 % | 87.80 % |
| C: Indra det (original) + Indra rec (fine-tuned) | 1.084 % | 85.83 % |
This release vs production: 277 vs 362 character errors, CER difference -0.212 points (95% paired page bootstrap -0.414 to -0.005).
Median CPU latency per bubble (4 threads): 4.4 ms vs 157.7 ms for YOLO + PP-OCRv6.
The browser implementation (Poneglyph frontend/src/lib/indraOcr.js, ONNX Runtime) scores 0.693 % CER on the same test (1219/1221 raw texts identical to the Python reference).
Selection was done on validation only. The test pages were inspected in earlier audits, so this is not a blind benchmark; detector labels are YOLO pseudo-labels. Short texts (sound effects, lone punctuation) remain weaker than PP-OCRv6. Full protocol, training settings and latency: metrics/evaluation_20261105.json.
Pipeline
- Grayscale bubble crop;
detinput = ink map (1 - gray/255) resized to long side round(0.75 x crop long side), padded to multiples of 32. - Line boxes from the core/distance maps (indra_ocr
det_post.decode), sorted by half-line bands then x. - Each line is cropped with Indra's
crop_line(tall window x3, height 96) and the windows are concatenated; no line found: the whole crop is one line. recgreedy CTC, then the manifest'spostprocessrules (lexicon, French punctuation spacing, sentence case).
Reference implementation: Python docker_scripts/eval_indra_ocr and browser frontend/src/lib/indraOcr.js in the Poneglyph repository.
License
These weights are derived from Indra OCR and keep its modified OpenRAIL-M license (see LICENSE), including its use restrictions. Indra OCR is by Datalab.
Model tree for Remidesbois/indra-ocr-poneglyph-bubble
Base model
datalab-to/indra-ocr