Research Note
August 31, 2026 · Harry Tran
We built SenOCR-Vi for Vietnamese document OCR. Built on PaddleOCR-VL-1.6, it retains a compact 0.96B-parameter architecture while fine-tuning only 12.09 million parameters, 1.26% of the model. On our corrected 160-page Vietnamese evaluation population, it reaches 82.83 Vietnamese document composite and 86.7% Vietnamese text recognition.
On the Vietnamese document benchmark, SenOCR-Vi scores 82.83, placing it within 0.37 points of MonkeyOCRv2-B-Parsing and 0.27 points of Claude-Sonnet-4.6. It finishes 0.73 points ahead of ChatGPT-5.2-2025-12-11 and 1.93 points ahead of PaddleOCR-VL-1.6 on the same Vietnamese column reported by MDPBench.
Figure 1
MDPBench Vietnamese composite score
At 0.959B parameters, SenOCR-Vi sits in the same Vietnamese performance range as large proprietary systems whose parameter counts are undisclosed. Among models with published sizes, chandra-ocr-2 scores 2.77 points higher with a 5B model, about 5.2 times SenOCR-Vi's parameter count.
The composite result is supported by a larger improvement in text recognition. SenOCR-Vi records a Vietnamese page-level text_block Edit_dist of 0.13305, equivalent to approximately 86.7% Vietnamese text recognition under 1 - Edit_dist.
Against the preceding controlled run, Edit_dist fell from 0.15300 to 0.13305, a 13.0% relative reduction in text error. Over the same comparison, English moved from 0.14583 to 0.14295 and Simplified Chinese from 0.14279 to 0.14249, concentrating the largest change in Vietnamese.
Figure 2
Page-level text_block Edit_dist — lower is better
Preceding controlled run SenOCR-Vi
Language
This recognition profile supports the model's use on textbooks, archival material, reports, and photographed Vietnamese documents.
Fine-tuning updated 12,091,392 parameters out of 958,588,736 total, or 1.2614% of the model. The vision encoder, vision-language aligner, embeddings, and LM head remained frozen, while decoder-only LoRA covered 126 projections.
| Training property | SenOCR-Vi |
|---|---|
| Total parameters | 958,588,736 |
| Trainable parameters | 12,091,392 |
| Trainable share | 1.2614% |
| LoRA rank | 32 |
| LoRA alpha | 64 |
| Decoder projections targeted | 126 |
| Vision encoder | Frozen |
| Aligner/projector | Frozen |
| Embeddings | Frozen |
| LM head | Frozen |
We used rank-32 LoRA with alpha 64 across the decoder's q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, and down_proj projections. This kept the visual backbone and the rest of the base document system unchanged.
The final training run used one NVIDIA A10G on AWS SageMaker ml.g5.2xlarge.
The final run starts from PaddlePaddle/PaddleOCR-VL-1.6 with a fresh decoder-only LoRA. It uses 42,254 training records and 1,171,860 supervised target tokens per corpus pass, completing approximately 3.0005 corpus passes or 3.516 million supervised target-token exposures.
With a per-device batch of 8 and gradient accumulation of 8, the effective batch size was 64 across 1,981 optimizer steps.
| Training setting | Value |
|---|---|
| Training records | 42,254 |
| Supervised target tokens per pass | 1,171,860 |
| Effective corpus passes | 3.000521 |
| Approx. target-token exposures | 3.516M |
| Optimizer steps | 1,981 |
| Effective batch size | 64 |
| Peak learning rate | 1e-4 |
| Minimum learning rate | 1e-5 |
| Warmup | 3% |
| Weight decay | 0.01 |
| Gradient clipping | 1.0 |
| Training precision | BF16 |
| Maximum sequence length | 4,096 |
| Final reported train loss | 0.4991 |
Optimization used a cosine learning-rate schedule with AdamW-family settings, beta values of 0.9 and 0.95, epsilon 1e-8, and seed 23.
Before training, the complete staged corpus was serialized through the production processor. The longest example was 2,585 tokens against a 4,096-token limit, so no training examples were truncated.
The 42,254-record corpus is Vietnamese-dominant and spans five lanes: Vietnamese handwriting, VinText, longer-form Vietnamese text, general OCR replay, and a private archival-document corpus.
| Corpus lane | Records | Supervised target tokens | Role |
|---|---|---|---|
| Vietnamese handwriting | 23,046 | 456,066 | Handwriting, diacritics, varied line and glyph shapes |
| VinText | 10,174 | 32,531 | Vietnamese scene and document text |
| Vietnamese text corpus | 1,539 | 491,846 | Longer-form printed Vietnamese and dense text sequences |
| General OCR replay | 4,687 | 22,594 | Retention of general OCR and English recognition |
| Private archival corpus | 2,808derived regions from 300 source documents | 168,823 | Photographed and archival-document specialization |
| Total | 42,254 | 1,171,860 |
Figure 3
Share of records and share of supervised target tokens, by corpus lane
Vietnamese handwriting VinText Vietnamese text corpus General OCR replay Private archival corpus
Vietnamese text corpus 3.6% · Private archival corpus 6.6%
VinText 2.8% · General OCR replay 1.9%
Vietnamese handwriting supplies variation in glyph shape and diacritic placement, while VinText adds noisier visual text and the longer-form corpus adds dense printed sequences. General OCR replay preserves broader recognition behaviour.
The archival lane adds photographed and historically formatted pages, where typography, lighting, and physical degradation differ from clean born-digital text. Its 300 source documents yielded 2,808 processed OCR training regions. The restricted source documents are not part of the public model release.
The corpus and recognition results point to three primary uses: archival digitization, educational material, and document ingestion for search or retrieval.
Archival digitization is the primary target. Historical pages frequently combine degraded paper, uneven illumination, older typography, dense diacritics, and imperfect photography. SenOCR-Vi can serve as the recognition layer that converts these pages into searchable text, digital-library records, and machine-readable corpora.
The same recognition problem appears in older textbooks and educational materials, many of which survive only as scans or physical copies. Converting them into clean text supports search, citation, preservation, comparison, and downstream research.
SenOCR-Vi's compact footprint also makes it practical for digitization pipelines that process large document collections.
Once digitized, the same output can feed search and retrieval systems. SenOCR-Vi converts image-based Vietnamese documents into text before chunking, indexing, search, or retrieval-augmented generation.
OCR quality does not determine retrieval quality by itself, but recognition errors propagate into the text those systems index and retrieve.
Those workflows include both clean digital pages and imperfect photographs. On the controlled EN/VI/ZH population, SenOCR-Vi reaches 91.1 on digital documents and 80.8 on photographed documents, reflecting the added difficulty of blur, uneven lighting, folds, and aging paper.
The specialization also preserves useful multilingual capability. On the same population, SenOCR-Vi records an English composite of 82.1 and a Simplified Chinese composite of 84.0, with text recognition of approximately 85.7% and 85.8%, respectively.
Figure 4
Document composite score on the controlled EN/VI/ZH population
Photographed pages remain harder under blur, uneven lighting, folds, and physical degradation.
Bars encode the composite score only. Text-recognition figures are reported as text and are not drawn to the bar scale.
The compact adaptation carries directly into deployment. SenOCR-Vi merges the LoRA updates into the PaddleOCR-VL-1.6 decoder weights, so inference does not require a second adapter model or a separate LoRA execution branch.
The qualified FP32 merged weights correspond to roughly 3.83 GB of raw parameter storage. A BF16 copy would be roughly 1.92 GB of raw parameter storage if separately validated for production serving.
These are parameter-storage estimates rather than end-to-end VRAM measurements. We have not yet established controlled pages-per-second, optimized BF16 peak-memory, or latency measurements against other OCR systems.
After training, the adapter was merged into the base model in FP32. On 128 fixture crops, base-plus-adapter inference and the merged model produced 128 out of 128 exact decoded matches.
The merged artifact contains no remaining adapter tensors, confirming that the release reproduces the qualified adapter behaviour.
SenOCR-Vi is strongest on text recognition. On the controlled mini-population, it scores 86.5% text under 1 - NED, compared with 70.7 TEDS for tables and 72.5 CDM for formulas.
This structured-element gap is one reason the 82.83 Vietnamese document composite sits below the 86.7% Vietnamese text-recognition result.
Complex tables, formula-heavy scientific pages, highly colourful textbooks, magazines, dense multi-column layouts, and severely degraded material remain harder than standard text pages.
For legal, financial, or historically sensitive transcription, human review should remain part of the workflow.
On the corrected real-page population, SenOCR-Vi records:
For context, the three-language macro remains slightly below the PaddleOCR-VL-1.6 base:
| Model | EN | VI | ZH | EN/VI/ZH avg |
|---|---|---|---|---|
| PaddleOCR-VL-1.6 | 83.50 | 80.90 | 85.90 | 83.43 |
| SenOCR-Vi | 82.08 | 82.83 | 84.03 | 82.98 |
| PaddleOCR-VL-1.5 | 83.00 | 78.90 | 84.80 | 82.23 |
| chandra-ocr-2 | 86.50 | 85.60 | 73.80 | 81.97 |
Figure 5
Document composite score on the corrected real-page evaluation population
PaddleOCR-VL-1.6 SenOCR-Vi
Y-axis range 78–88.
The 82.98 macro trails the PaddleOCR-VL-1.6 base by 0.45 points, while Vietnamese improves from 80.90 to 82.83. The result is consistent with a targeted Vietnamese specialization rather than a broad multilingual gain.
The original scorer emitted three additional non-page rows because of a key-parsing defect. All three affected the Vietnamese population.
SenOCR-Vi's 82.83 Vietnamese score and 82.98 EN/VI/ZH macro are re-aggregated over the actual evaluation-page population rather than those phantom rows.
We will retain that note with the released benchmark artifacts so the public numbers can be traced back to the corrected page population.
SenOCR-Vi is released under the Apache License 2.0.
The public release will include the qualified merged weights, processor configuration, model configuration, inference instructions, environment notes, benchmark results, known limitations, and base-model attribution.