Research Note

SenOCR-Vi: Efficient Intelligence for Vietnamese Document OCR

SenOCR-Vi

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.

Performance

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

Vietnamese document OCR performance

MDPBench Vietnamese composite score

Vietnamese composite score
87 86 85 84 83 82 81 80 79








85.60
83.20
83.10
82.83
82.10
80.90
chandra-ocr-2
5B parameters
MonkeyOCRv2-B-Parsing
0.7B parameters
Claude-Sonnet-4.6
Size undisclosed
SenOCR-Vi
0.959B parameters
ChatGPT-5.2-2025-12-11
Size undisclosed
PaddleOCR-VL-1.6
~0.9B parameters

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.

Vietnamese recognition

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

Text recognition before and after Vietnamese specialization

Page-level text_block Edit_dist — lower is better

Preceding controlled run SenOCR-Vi

Edit_dist
0.160 0.155 0.150 0.145 0.140 0.135 0.130 0.125







0.15300
0.13305
0.14583
0.14295
0.14279
0.14249
Vietnamese
English
Simplified Chinese

Language

This recognition profile supports the model's use on textbooks, archival material, reports, and photographed Vietnamese documents.

Training efficiency

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 propertySenOCR-Vi
Total parameters958,588,736
Trainable parameters12,091,392
Trainable share1.2614%
LoRA rank32
LoRA alpha64
Decoder projections targeted126
Vision encoderFrozen
Aligner/projectorFrozen
EmbeddingsFrozen
LM headFrozen

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.

Hardware

The final training run used one NVIDIA A10G on AWS SageMaker ml.g5.2xlarge.

Training

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 settingValue
Training records42,254
Supervised target tokens per pass1,171,860
Effective corpus passes3.000521
Approx. target-token exposures3.516M
Optimizer steps1,981
Effective batch size64
Peak learning rate1e-4
Minimum learning rate1e-5
Warmup3%
Weight decay0.01
Gradient clipping1.0
Training precisionBF16
Maximum sequence length4,096
Final reported train loss0.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.

Training data

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 laneRecordsSupervised target tokensRole
Vietnamese handwriting23,046456,066Handwriting, diacritics, varied line and glyph shapes
VinText10,17432,531Vietnamese scene and document text
Vietnamese text corpus1,539491,846Longer-form printed Vietnamese and dense text sequences
General OCR replay4,68722,594Retention of general OCR and English recognition
Private archival corpus2,808derived regions from 300 source documents168,823Photographed and archival-document specialization
Total42,2541,171,860

Figure 3

Composition of the 42,254-record training corpus

Share of records and share of supervised target tokens, by corpus lane

Vietnamese handwriting VinText Vietnamese text corpus General OCR replay Private archival corpus

AShare of training records

n = 42,254 records
54.5%
24.1%
11.1%

Vietnamese text corpus 3.6% · Private archival corpus 6.6%

BShare of supervised target tokens

n = 1,171,860 tokens per corpus pass
38.9%
42.0%
14.4%

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.

Use cases

The corpus and recognition results point to three primary uses: archival digitization, educational material, and document ingestion for search or retrieval.

Archives

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.

Education

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.

Search and RAG

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.

Document performance

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

Performance across document conditions and languages

Document composite score on the controlled EN/VI/ZH population

Panel A

Document condition

100 75 50 25 0




91.1
80.8
Digital
Photographed

Photographed pages remain harder under blur, uneven lighting, folds, and physical degradation.

Panel B

Language performance

100 75 50 25 0




82.08
82.83
84.03
English
Text recognition ~85.7%
Vietnamese
Text recognition ~86.7%
Simplified Chinese
Text recognition ~85.8%

Bars encode the composite score only. Text-recognition figures are reported as text and are not drawn to the bar scale.

Inference

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.

Export

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.

Limitations

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.

Multilingual benchmark

On the corrected real-page population, SenOCR-Vi records:

For context, the three-language macro remains slightly below the PaddleOCR-VL-1.6 base:

ModelENVIZHEN/VI/ZH avg
PaddleOCR-VL-1.683.5080.9085.9083.43
SenOCR-Vi82.0882.8384.0382.98
PaddleOCR-VL-1.583.0078.9084.8082.23
chandra-ocr-286.5085.6073.8081.97

Figure 5

SenOCR-Vi versus PaddleOCR-VL-1.6 across EN, VI, and ZH

Document composite score on the corrected real-page evaluation population

PaddleOCR-VL-1.6 SenOCR-Vi

78 80 82 84 86 88 Document composite score Language / aggregate category 83.50 82.08 English Δ −1.42 80.90 82.83 Vietnamese Δ +1.93 Target-language gain: +1.93 85.90 84.03 Simplified Chinese Δ −1.87 83.43 82.98 EN/VI/ZH macro average Δ −0.45

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.

Benchmark note

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.

Availability

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.


References

  1. MDPBench official leaderboard, Yuliang-Liu/MultimodalOCR, accessed 2026-08-31: github.com/Yuliang-Liu/MultimodalOCR/blob/main/MDPBench/README.md
  2. PaddleOCR-VL-1.6 documentation: github.com/PaddlePaddle/PaddleOCR — PaddleOCR-VL-1.6.en.md
  3. MonkeyOCRv2 model documentation: huggingface.co/zenosai/MonkeyOCRv2-B-Parsing
  4. chandra-ocr-2 model card: huggingface.co/datalab-to/chandra-ocr-2
  5. PaddleOCR-VL deployment documentation: github.com/PaddlePaddle/PaddleOCR — PaddleOCR-VL.en.md