跳到主要内容

开放权重

OpenThai 2.0 OCR Text

一个小到可以在 CPU 上运行的开放泰英文 OCR 模型。

  • 参数102万
  • 许可Apache-2.0
  • 泰文印刷文字,12 个测试集87.8分
  • 单个 CPU 进程0.39秒/页

下载权重通过 API 使用

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 MarkdownTyphoon OCR V2 2B
12 个印刷文字测试集平均87.890.389.6
行政法院判决书97.096.296.2
皇家公报96.398.094.6
预算文件(已核对)99.598.297.3
古籍77.179.777.2
ThaiOCRBench 整页82.090.687.3
手写10.378.976.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 运行,速度较慢。

训练​

识别器在 410,270 行真实文字上微调:其中 261,877 行来自行政法院扫描件,以法院自己的文本为标注;41,101 行来自泰国国会预算 PDF,仅保留 PDF 文字层与识别器结果一致的行;107,292 行来自 Wikisource 古籍。另有用 85 种开放许可字体渲染的合成泰英文字行。未使用任何个人数据集,所有测试文档均已排除。

许可​

Apache-2.0。检测器为 PaddlePaddle 的 PP-OCRv6-tiny 原版,识别器以 PP-OCRv6-tiny 的识别器为起点微调,并换上泰文输出层;两者均为 Apache-2.0 许可,声明文件在仓库中。

由 iApp Technology 开发。在 Siam AI Corporation 提供的 NVIDIA H100 GPU 上训练。

Siam AI Corporation