开放权重
OpenThai 2.0 OCR Text
一个小到可以在 CPU 上运行的开放泰英文 OCR 模型。
- 参数102万
- 许可Apache-2.0
- 泰文印刷文字,12 个测试集87.8分
- 单个 CPU 进程0.39秒/页
iApp Technology 在 Hugging Face 上发布的开放权重,可免费下载。
功能
- 读取泰文和英文印刷文字按阅读顺序返回页面文字,每行附带边框和置信度。它不输出表格或 Markdown;需要这些请使用 OpenThai 2.0 OCR Markdown。
- 在 CPU 上运行一页文字密集的 A4 用时 0.39 秒(逐页处理)。每个进程每页消耗 0.5 CPU 秒、约 450 MB 内存,因此 8 个 Xeon 核心每分钟约可读 950 页。无需 GPU。
- 体积小共 102 万参数,两个文件分别为 1.8 MB 和 2.4 MB:一个文本行检测器和一个泰文行识别器。
- 应对真实页面依据文字行的读向旋转侧放或倒置的页面,校正倾斜的扫描件,逐栏读取两栏和三栏页面,保持表格和预算页面的行序,并能读取深色背景上的浅色文字。其稳健性测试的 22 种条件全部通过。
- 可继续训练附带识别器权重,可用于进 一步训练。
测评结果
所有模型读取相同的页面并以相同方式评分:字符准确率,即 100 ×(1 − 字符错误率),越高越好;评分前去除两侧的标记,并计入阅读顺序。平均值覆盖 12 个印刷文字测试集;手写单独列出。
| 本模型 | OpenThai 2.0 OCR Markdown | Typhoon OCR V2 2B | |
|---|---|---|---|
| 12 个印刷文字测试集平均 | 87.8 | 90.3 | 89.6 |
| 行政法院判决书 | 97.0 | 96.2 | 96.2 |
| 皇家公报 | 96.3 | 98.0 | 94.6 |
| 预算文件(已核对) | 99.5 | 98.2 | 97.3 |
| 古籍 | 77.1 | 79.7 | 77.2 |
| ThaiOCRBench 整页 | 82.0 | 90.6 | 87.3 |
| 手写 | 10.3 | 78.9 | 76.7 |
| 每页秒数 | 0.39(CPU) | 2.97(H100)‡ | 16.72(H100)† |
简而言之:在所测 15 个引擎中,判决书准确率最高;平均分比最高分低 2.5 分(最高分由在 GPU 上运行的 OpenThai 2.0 OCR Markdown 取得),而它只需要 CPU。GPU 模型在表格、照片和手写上读得更好。其训练数据包含行政法院扫描件,但不包括测试用的 150 份文书。
速度为逐页处理。本模型读取了上述测试集中的 24 页印刷页面;‡ 24 页判决书,为文字密集的整页 A4;† 65 页泰文文档表格页,使用 --enforce-eager 运行(所用 vLLM 版本需要 )。15 个引擎的完整表格、12 个测试集及速度测量方法见模型卡。
运行
hf download iapp/OpenThai2.0-OCR-Text --local-dir OpenThai2.0-OCR-Text
pip install openvino opencv-python-headless pyclipper numpy
cd OpenThai2.0-OCR-Text
from runtime.line_engine import LineOCR
ocr = LineOCR(".", threads=1) # det.onnx, rec.onnx, rec_dict.txt, config.json
r = ocr.read("page.png") # a path, bytes, a BGR array or a PIL image
print(r["text"]) # lines in reading order, columns one after another
r["lines"] # [{"text", "confidence", "row", "box"}], boxes in the input image's coordinates
追求吞吐量时,每个核心运行一个进程并设 threads=1;同一进程内的线程在约两个核心后便不再提速。也可用 ONNX Runtime 代替 OpenVINO。
想用托管服务?OpenThai 2.0 OCR Text API 基于本模型构建:纯文字每页 0.049 IC,版面 JSON 或 Word、PowerPoint、Excel、可搜索 PDF 文件每页 0.15 IC。
局限
- 仅限印刷文字。 手写和场景文字识别效果差;这类内容请使用视觉语言模型,例如 OpenThai 2.0 OCR Markdown。
- 装饰性字体: 高度艺术化字体中的短标签可能被误读。
- 印章会被识别为文字, 因为它们本身就是页面上的文字。
- 所述 CPU 速度需要 AMX(Intel Sapphire Rapids 或更新),以 bfloat16 运行;其他 CPU 以 float32 运行,速度较慢。