indra-ocr vs Tesseract vs PaddleOCR:OmniParseBench 2937页基准测试与吞吐量完整对比

原创2026-10-19 12:08:251,643 阅读
文章标签:计算机视觉OCR

indra-ocr vs Tesseract vs PaddleOCR:OmniParseBench 2937页基准测试与吞吐量完整对比

本文对 indra-ocr、Tesseract 和 PaddleOCR 三大 OCR 工具做一次完整对比:精度与速度。indra-ocr 是一款只有约 100 万参数的轻量级 CPU OCR 模型,能把 PDF 和图片转换为 Markdown、纯文本或带边框坐标的 JSON,在 32 核 CPU 上最高可达 49.4 页/秒,无需 GPU、不依赖 PyTorch。下面基于 OmniParseBench 全部 2,937 页测试数据,看看三者到底差多少。

三款 OCR 工具速览

工具 定位 模型规模 单页中位耗时(x86, 4 核)
indra-ocr 轻量极速 CPU OCR 约 1M 参数,ONNX 模型约 18 MB 228 ms
Tesseract 5 经典开源 OCR,输出纯文本行 英文模型 5,496 ms
PaddleOCR PP-StructureV3 完整文档结构流水线(版面+表格+公式) 多模型组合 40,958 ms

可以看到量级差异:同样是纯 CPU 环境,indra-ocr 处理一页只需约 0.23 秒,而 PaddleOCR 的完整结构流水线要 40 秒以上。

OmniParseBench 2937页基准测试 OCR 精度与速度对比图

OmniParseBench 2937 页基准:精度对比

OmniParseBench 包含 2,937 页文档、16,288 个通过/失败测试,涵盖文本、表格、版面三大维度。测试在同一台 x86 机器上运行:每个引擎 4 vCPU、逐页处理、相同页面、相同评分器、默认配置,保证公平。

引擎 综合得分 文本 表格 版面
indra-ocr(auto 模式) 62.1 41.3 56.4 88.6
indra-ocr --math 模式 66.8 57.5 54.8 88.1
PaddleOCR PP-StructureV3 58.4 55.6 47.8 71.7
PaddleOCR PP-OCRv6 small(仅文本) – 35.8 0.0 –
Tesseract 5(英文模型) – 19.3 0.0 –

几个关键结论:

  • 综合得分:indra-ocr 默认模式 62.1 分,超过 PaddleOCR 完整流水线(58.4);开启 --math 后达 66.8 分,文本单项也反超(57.5 vs 55.6)
  • 版面识别:88.6 分遥遥领先,PaddleOCR 为 71.7,Tesseract 和 PP-OCR 文本模型根本不输出版面信息
  • 表格:Tesseract 和 PP-OCR 文本模型只能输出文本行,表格得分为 0
  • 中文测试(136 项):indra-ocr 64.7 分,与 PP-OCRv5 移动端中文模型(65.4)基本持平,PP-StructureV3 为 68.4

CPU OCR 模型吞吐量对比图表,indra-ocr 32核每秒49.4页

CPU 吞吐量完整对比:每秒 49.4 页

吞吐量测试同样使用 OmniParseBench 的 300 页样本,同一台 AMD EPYC 机器、无 GPU、纯 OCR 模式,每个核一个单线程 worker 进程:

引擎 4 核 8 核 16 核 32 核
indra-ocr 7.3 页/s 14.2 27.2 49.4
PaddleOCR PP-OCRv6 small 0.65 1.24 2.42 4.28
Tesseract 5 0.78 1.37 2.27 2.92
PaddleOCR PP-StructureV3 ≤ 0.022 ≤ 0.044 ≤ 0.089 ≤ 0.18

32 核下,indra-ocr 是 PP-OCR 文本模型的 11.5 倍、Tesseract 的 16.9 倍、PP-StructureV3 的约 280 倍。 单页延迟方面,4 核 vCPU 上约 230 ms/页,比 Tesseract 和 PaddleOCR 快 12–24 倍。

还有一个容易被忽略的优势:indra-ocr 对数字 PDF 会直接读取文本层(支持任意文字系统),只对缺失部分做 OCR,--mode 参数可在 auto(混合)、ocr(强制识别)、text(仅文本层)之间切换。

真实文档识别效果

下面两张图是 indra-ocr 在 OmniParseBench 真实页面上的输出:彩色框是带标签的版面块(标题、列表、表格、图注等),淡蓝色框是文本行,全部由 JSON 输出直接绘制。

indra-ocr 倒置扫描信件自动转正并识别双栏版面的 OCR 效果演示

↑ 扫描的信件是上下颠倒的:indra-ocr 自动把页面转正,按正确阅读顺序识别双栏内容,并找出各标题位置。

indra-ocr 学术期刊页面表格识别为 HTML 并输出带版面块的 OCR 效果

↑ 含两个表格的期刊页面,表格以 HTML 形式输出并保留图注。

快速上手 indra-ocr:一条命令安装

pip install indra-ocr

要求 Python 3.10+,自动安装 ONNX Runtime、OpenCV 和 pypdfium2,不装 PyTorch。首次运行会从模型仓库下载约 18 MB 的模型并缓存。常用命令:

indra-ocr paper.pdf                    # PDF 转 Markdown 输出到终端
indra-ocr *.pdf --out results/         # 批量处理,每个输入一个 .md,用满所有核心
indra-ocr scan.png --format json       # 输出文本行、边框、版面块和置信度
indra-ocr paper.pdf --math             # 公式输出为 LaTeX

Python 调用也很简单:indra_ocr.load() 加载引擎,convert 逐页转换,每页返回 markdown、lines(带坐标和置信度)、blocks(按阅读顺序的版面块)和 timings。需要可视化对比时,indra-ocr-viewer 提供本地 Web 查看器,可叠显识别结果并直接与 Tesseract 对比。

模型文件说明(本仓库内容即为一套完整 ONNX 模型):

文件 作用
rec.onnx 主识别器,约 1M 参数,负责拉丁文字
rec_cjk.onnx 中文识别器,含汉字的内容自动路由到此
det.onnx 文本行检测
orient.onnx 页面方向判定(自动转正倒置页面)
order.onnx 阅读顺序排序
script.onnx 文字系统分类
mathcls.onnx、math_enc.onnx 公式模式(--math)分类与编码器
config.json 模型清单与框架声明(onnxruntime)

已知局限,先了解再选型 ⚠️

indra-ocr 为「干净印刷体 + 极速」而设计,以下场景不适合:

  • 复杂表格:合并单元格、跨行文本、嵌套表头、无线框表格,单元格可能错位
  • 手写体:不支持(OmniParseBench 手写测试约 8%)
  • OCR 列表之外的文字系统:扫描/图片只支持拉丁、西里尔、希腊、天城文、孟加拉文和中文;阿拉伯文、日文假名、韩文等只能通过数字 PDF 的文本层读取
  • 老旧褪色扫描件:低质量老扫描准确率仅约 20%

另外数学公式默认输出为纯文本(--math 开启后单项得分从 14.3 提升到 56.5,但整页耗时会增加约 30–35%),也不支持竖排文字。

如何选择:选型建议清单

你的场景 推荐
大批量干净印刷文档、纯 CPU 环境、要求秒级吞吐 ✅ indra-ocr(本仓库模型)
PDF 批量转 Markdown/JSON 并需要版面块和阅读顺序 ✅ indra-ocr
遗留脚本、对精度要求不高、只想跑个纯文本行 Tesseract
复杂文档高精度解析(复杂表格、公式、印章)、可接受分钟级耗时 PaddleOCR PP-StructureV3
手写字迹、严重退化扫描件 以上三款都不理想,建议使用专门的大规模 OCR 服务

一句话总结:在 CPU 环境处理干净印刷体文档,indra-ocr 以 200 倍于 PaddleOCR 完整流水线的速度跑出了更高的综合得分(62.1 vs 58.4),是目前「速度 × 精度」性价比最突出的选择;追求极限结构精度且不在乎耗时,再考虑 PaddleOCR。

更多细节可参阅项目说明 README.md,完整的 CLI 参数、Python API 和基准复现步骤(bench/opb_indra.py)均有文档。

登录后查看全文
indra-ocr