开放权重
OpenThai 2.0 OCR Markdown
一个开放模型,把泰文文档页面读成 Markdown,每张表格依然是表格。
- 参数0.63十亿
- 许可OpenMDW-1.1
- 泰文文档表格95.2分
- 单张 H1001.6秒/页
iApp Technology 于 2026 年 11 月 12 日在 Hugging Face 上开放权重,可免费下载。
能做什么
- 表格依然是表格表格以 HTML 输出,含 rowspan 与 colspan,泰国政府表单中合并的表头单元格得以保留。在 65 页泰国政府机构和大学的真实文档上得分 95.2,其基础模型为 91.3。
- 输出 Markdown标题、列表和段落以 Markdown 输出,可直接用于搜索索引、检索流程或语言模型的提示词。
- 标出每个区块的位置每个区块都带有位置框和类别,例如标题、正文、表格或图片,并按阅读顺序排列。
- 按顺序读多栏两栏和三栏页面逐栏阅读,而不是横向穿过各栏。
- 单张 GPU 即可运行在一张 NVIDIA H100 上用 vLLM 逐页处理,每页 1.6 秒。参数量 0.63B。
测评结果
- 概览
- 印刷文字(分测试集)
所有模型读取相同的页面,并由同一脚本评分;Typhoon OCR V2 2B 与 Typhoon OCR V2 0.8B 使用其模型卡上的设置。区间为按页配对 bootstrap 的 95% 区间。
| 模型 | 规模 | 泰文文档表格 | ThaiOCRBench 表格 | 泰文印刷文字 | 每页秒数 | 新皇家公报页面 |
|---|---|---|---|---|---|---|
| OpenThai 2.0 OCR Markdown | 0.63B | 95.2 | 68.9 | 90.3 | 1.6 | 98.7 |
| Nemotron 3.5 Parse(基础模型) | 0.63B | 91.3 | 68.3 | 89.0 | 1.8 | 91.5 |
| Typhoon OCR V2 2B | 2B | 91.6 | 67.6 | 89.6 | 15.8 | 94.6 |
| Typhoon OCR V2 0.8B | 0.8B | 89.0 | 64.7 | 85.8 | 18.7 | – |
- 泰文文档表格:65 页泰国政府机构和大学的真实文档,文字与表格合并评分。比 Typhoon OCR V2 2B 高 3.6 分,95% 区间 [+1.2, +6.2];比其基础模型高 3.9 分。
- ThaiOCRBench 表格:在其 193 张表格图像上评估表格结构与内容(TEDS)。 对 Typhoon OCR V2 2B 为 +1.3,[−1.7, +4.6]:持平。
- 泰文印刷文字:字符准确率 100 × (1 − 字符错误率),为 12 个测试集的平均,共 1,200 页及 50 份完整的行政法院判决书。对 Typhoon OCR V2 2B 为 +0.76,[−0.04, +1.51]:持平。因重复循环被截断的页面按空白计;2,270 页中没有一页被截断。
- 每页秒数:在一张 NVIDIA H100 上通过 vLLM 逐页发送 12 页的中位数。Typhoon OCR V2 2B 在我们使用的 vLLM 版本上需要
--enforce-eager,因此其时间偏慢。 - 新皇家公报页面:339 页,来自 2026 年 11 月 4–9 日 发布的 293 份文件,晚于我们收集训练数据的时间。该测试集在任何模型读取之前锁定,每个模型对每页只读一次;指标为字符准确率。这些是新文件,但属于 OpenThai 2.0 OCR Markdown 训练过的类型(此前月份的皇家公报页面),因此它们说明的是模型读取未见过的文件的能力,而不是读取新类型文件的能力。参考文本由制作我们皇家公报训练标签的同一工具生成,因此遵循本模型学过的书写惯例。对 Typhoon OCR V2 2B 为 +4.1,[+3.7, +4.4];去掉所有空格、使换行合并方式不计入时,为 +3.5,[+3.2, +3.9]。Typhoon OCR V2 0.8B 未在此测试集上运行。
| 测试集 | OpenThai 2.0 OCR Markdown | Nemotron 3.5 Parse(基础模型) | Typhoon OCR V2 2B | Typhoon OCR V2 0.8B |
|---|---|---|---|---|
| 泰国预算文件(已验证) | 98.2 | 98.9 | 97.3 | 86.0 |
| 皇家公报(已验证) | 95.7 | 98.6 | 96.4 | 96.0 |
| 泰国预算文件 | 79.2 | 78.9 | 79.1 | 75.8 |
| 皇家公报 | 98.0 | 92.2 | 94.6 | 95.3 |
| SEA-DocBench(泰文) | 56.2 | 56.8 | 55.9 | 56.0 |
| 旧书(Wikisource) | 79.7 | 76.9 | 77.2 | 73.7 |
| 行政法院判决书,50 份全文 | 96.2 | 96.9 | 96.2 | 95.5 |
| ThaiOCRBench 整页 | 90.6 | 92.0 | 87.3 | 77.9 |
| 泰文文档,无表格页面 | 96.9 | 95.9 | 95.2 | 95.1 |
| OCR104 文档裁剪图 | 97.2 | 97.7 | 95.8 | 89.9 |
| OCR104 泰文+英文裁剪图 | 99.3 | 94.2 | 100.0 | 97.2 |
| OCR104 拍摄的文档裁剪图 | 96.4 | 89.4 | 99.8 | 91.1 |
| 12 个测试集平均 | 90.31 | 89.02 | 89.56 | 85.80 |
字符准确率 100 × (1 − 字符错误率);每行最佳结果以粗体标出。在 12 个测试集中有 8 个优于 Typhoon OCR V2 2B,行政法院判决书持平;落后的是皇家公报(已验证),以及拍摄的文档裁剪图和泰文+英文裁剪图:后两组共 36 张短图像,在平均值中占十二分之二的权重。
简而言之:在泰文文档表格和新皇家公报页面上显著优于 Typhoon OCR V2 2B,在 ThaiOCRBench 表格和印 刷文字上与其持平,速度约快 10 倍,规模约为其三分之一。在我们收集训练数据之后发布的 339 页新皇家公报上,其字符准确率为 98.7%,Typhoon OCR V2 2B 为 94.6%。测试集、评分脚本以及检查点的选择方法见模型卡。
运行
- 用 vLLM 部署
- 解析一页
模型仓库附带 NVIDIA 的 nemotron_parse 软件包,用于部署模型和处理输出。
hf download iapp/OpenThai2.0-OCR-Markdown --local-dir OpenThai2.0-OCR-Markdown
pip install vllm==0.26.0
pip install -e ./OpenThai2.0-OCR-Markdown
vllm serve ./OpenThai2.0-OCR-Markdown --served-model-name nemotron-parse --trust-remote-code
from nemotron_parse.inference import DocumentParser, GenerationError
with DocumentParser(base_url="http://localhost:8000/v1", model="nemotron-parse") as parser:
try:
doc = parser.parse("page.png", mode="single")
print(doc["markdown"]) # Markdown;表格为带 rowspan 和 colspan 的 HTML
except GenerationError:
pass # 页面在 token 上限处被截断时抛出,见“局限”
请使用默认提示词,它会要求输出位置框和类别。纯 Markdown 提示词也可用,但我们的测试使用默认提示词。
已在 vLLM 0.26.0、transformers 5.14.1、PyTorch 2.11 和 Python 3.10 上测试。凡能运行 Nemotron 3.5 Parse 的环境都能运行它。
需要托管服务?OpenThai 2.0 OCR Markdown API 在泰国境内为你运行此模型,每页 0.15 IC。如需纯文本、Word、PowerPoint、Excel 或可搜索 PDF,OpenThai 2.0 OCR Text 每页 0.049 IC 起。
局限
- 重复循环:在我们的测试中没有出现。2,270 页印刷文字、193 张 ThaiOCRBench 表格图像、65 页泰文文档表格和 6,137 页开发集页面中,没有一页因循环被截断。若其他页面在 token 上限处被截断,
DocumentParser会抛出GenerationError,可将该页交给其他识别器。 - 拍摄的单个词语和很短的裁剪图识别效果不如整页:OCR104 拍摄的文档裁剪图上为 96.4,Typhoon OCR V2 2B 为 99.8。
- 针式打印文字(银行存折、针式打印的表单)识别效果不如普通印刷文字:在我们的针式打印开发集裁剪图上,字符准确率约 89%;这些裁剪图是生成的,目前还没有真实针式打印的测试集,因此真实存折上的结果预计会更低。
- 手写仅在单行文字层面可读;整页手写不是目标。
- 场景文字和屏幕照片不是目标。
- 图表的识别方式与基础模型相同,未参与微调。
训练
文字标签完全准确,从不使用其他模型的识别结果:共 54,596 行训练数据,主要来自合成的泰文文档(表单、备忘录、会议纪要、日程表和合并单元格表格,渲染时加入扫描与手机拍摄的退化效果,另有两栏和三栏页面),以及原生数字的泰国政府页面,即泰国国会预算文件和皇家公报,其 PDF 文字层提供准确文字;另有其他类型的表格:公开数据集 FinTabNet 和 PubTabNet 中的金融与科研表格,以及合成的泰文收据、对账单和化验报告,其中一部分的数字全部为泰文数字。其中 420 行是此前的微调版本陷入重复循环的页面,训练时把该循环作为不应写出的内容。在一张 H100 上训练一个轮次,共 1,707 步;发布的是最后一个检查点,按训练结果原样使用,未混入基础模型的权重。该检查点由在评分任何候选之前写定的规则选出,只使用开发集。训练未使用任何测试集页面。数据构成、训练配方和选择规则见模型卡。
许可
OpenMDW License Agreement 1.1 版,与基础模型相同。OpenThai 2.0 OCR Markdown 是基于 NVIDIA Nemotron 3.5 Parse(0.63B)的泰文微调模型;NVIDIA 的许可、声明和原始模型卡原样保留在仓库中。分词器采用 MIT 许可。
Built on NVIDIA Nemotron.
由 iApp Technology 开发。在 Siam AI Corporation 提供的 NVIDIA H100 GPU 上训练和评估。