【免费下载链接】indra
1M param OCR model - runs on CPU, 15x faster than tesseract, close to 1B+ param models in accuracy
Indra OCR 是一款仅 1M 参数、纯 CPU 运行的轻量级 OCR 模型,支持 PDF 与图片转 Markdown / 文本 / JSON,实测比 Tesseract 快 15 倍,精度接近 1B+ 参数的大模型。它支持 80+ 种语言、手写体、倾斜和倒置页面,首次运行自动下载约 76 MB 模型,无需 GPU 和 PyTorch。
一、Indra OCR 凭什么“以小博大”?
先给结论——这是官方 OmniParseBench 基准(2,937 页)上,OCR 引擎“文本精度 vs 单页耗时”的对比图:
几个关键数据:
| 引擎 | 文本得分 | 表格 | 版面 | 单页中位耗时 |
|---|---|---|---|---|
| Indra OCR(默认 auto 模式) | 46.7 | 61.1 | 92.2 | 212 ms |
Indra OCR(--math数学模式) | 62.7 | 59.6 | 92.0 | 357 ms |
| PaddleOCR PP-StructureV3 | 55.6 | 47.8 | 71.7 | 40,958 ms |
| Tesseract 5 | 19.3 | 0 | – | 5,496 ms |
- 快:32 核 CPU 上约 44 页/秒,是 Tesseract 的 15 倍、PaddleOCR PP-OCR 文本模型的 10 倍;4 核上单页仅约 210 ms。
- 准:OmniParseBench 总分 66.7(开启
--math后 71.4),全面领先 PaddleOCR 完整流水线(58.4)。 - 小:主识别器
rec.onnx约 125 万参数,全部默认模型合计 7.3M 参数,基于 ONNX Runtime 推理。
💡 完整基准数据与复现脚本见 README.md 的 Benchmarks 章节和 bench/opb_indra.py。
二、快速上手:三步完成 PDF 转 Markdown
安装(只需 Python 3.10+):
pip install indra-ocr一条命令出结果:
indra-ocr paper.pdf # Markdown 直接输出到终端 indra-ocr *.pdf --out results/ # 每个输入生成一个 .md,自动用满所有核心 indra-ocr scan.png --format json # 输出文本行、坐标框、版式块、置信度几个常用参数:
| 参数 | 作用 |
|---|---|
--format [md\|text\|json] | 输出格式,默认 Markdown |
--mode [auto\|ocr\|text] | auto优先读 PDF 文本层,读不了的页才 OCR(默认) |
--math | 公式转成 LaTeX,总分可从 66.7 提升到 71.4 |
--cores N | 限制并行核心数 |
--keep-furniture | 在 Markdown 中保留页眉页脚 |
--timings | 输出每页各阶段的耗时 |
除了命令行,它还是一个很薄的 Python 库,核心实现分布在 indra_ocr/ 目录下:
import indra_ocr conv = indra_ocr.load(threads=4) for i, page in conv.convert("paper.pdf"): print(page.markdown) # 标题、列表、表格(HTML) print(page.blocks) # 按阅读顺序的版式块:label / bbox / text可运行的示例脚本:examples/ocr_image.py(图片转 Markdown / 文本 / JSON)和 examples/quickstart.ipynb(快速上手 Notebook)。
三、揭秘:1M 参数如何逼平 1B 级大模型?
小模型通常精度吃亏,Indra OCR 的做法不是“堆参数”,而是把工程效率花在刀刃上。拆开看(主流程见 indra_ocr/pipeline.py):
1. 按书写系统分治识别:每条文本行“对号入座”
它并不用一个巨型模型硬啃所有语言,而是 4 个专用识别器 + 1 个行分类器:
rec.onnx:拉丁字母(约 50 种语言)、西里尔、希腊文及拉丁手写体;rec_cjk.onnx:简/繁体中文、日文、韩文;rec_rtl.onnx:阿拉伯、波斯、乌尔都、希伯来等右起文字(输出自动转为逻辑顺序);rec_world.onnx:印地文、泰米尔、泰文、缅甸文等其余文字。
分类器把每条文本行路由到对应识别器,不确定的行会由主识别器“复核”,取置信度更高的结果(路由阈值见pipeline.py中的ROUTE_SURE)。
2. 语言模型兜底:读得不行就“重读一遍”
对置信度低的行(阈值LM_GATE),用 n-gram 语言模型做 beam search 重读,手写体和噪声页收益明显——模型包里的 46 MB 语言模型就是为它准备的(语言模型逻辑见 indra_ocr/lm.py)。
3. PDF 文本层优先,OCR 只补漏
--mode auto(默认)会先校验数字 PDF 的文本层是否可信(含对 Hindi 传统字体、Chrome 导出的右起文本层等坑的专项检查),可信就直接读文本层,不可信才启动 OCR。这招让它在“文本 + 表格 + 版面”综合得分上大幅领先,也解释了表格和版面两项的高分(92.2)。
4. 每页并行:吃满所有 CPU 核心
单页内部用多线程加速有限,真正的提速来自页间并行:每个可用核心跑一个单线程 worker 进程,一页一个任务,哪怕一个长 PDF 也能用满全部核心(进程池实现见 indra_ocr/parallel.py,命令行入口见 indra_ocr/cli.py)。
5. 角度、方向全兜底
- 倾斜最多 45° 的页面自动扶正(
page.skew),旋转 90°/180° 的页面自动转正(page.rotation,方向模型见pipeline.py中的orient.onnx逻辑); - 支持中/日文竖排页面(
page.vertical); - 深色背景浅色文字(PPT、深色表头)也能读。
上图是它对双栏学术页的识别效果:彩色框是带标签的版式块(Text、Section-Header、Page-Header…),淡蓝框是文本行,全部由 JSON 输出绘制,未经人工编辑。更多真实示例见 EXAMPLES.md。
四、实战:一张斜了 30 度的扫描件
倾斜文档是传统 OCR 的重灾区。下面这页被旋转了 30°:Indra OCR 检测到倾斜(skew: -30.0),先扶正再识别,输出与正向页面一致,坐标还会映射回原页面位置:
五、诚实清单:Indra OCR 不擅长什么
它主打“干净印刷体 + 极速”,以下场景请谨慎(或考虑 Datalab 的 Chandra 平台):
- 复杂表格:合并单元格、跨行跨列、无线表格可能错行错列;简单网格表格没问题;
- 手写体:能读但一般(OmniParseBench 手写测试 25.2%),草书和淡铅笔字迹最差;
- 严重退化的扫描件:老旧褪色低分辨率扫描得分仅 29.5%;
- 列表外的文字系统:叙利亚文、藏文、蒙文等只能靠 PDF 文本层;
- 多音变符号的拉丁语言:捷克语、冰岛语等偶尔会写错相近的变音符号。
代码为 Apache 2.0 协议,模型权重采用修改版 OpenRAIL-M 协议(研究与个人使用免费),详见 LICENSE。
六、写在最后
Indra OCR 证明了 OCR 赛道的另一条路线:不追 1B 参数规模,用“小模型 + 分治 + 工程并行”把 CPU 的性价比打满。如果你的场景是海量文档数字化、PDF 转 Markdown、RAG 数据清洗,它几乎是零 GPU 成本的首选;而复杂表格和高精度手写识别,才需要交给更大的模型。
核心源码速查:
- 流水线总控(检测/识别/阅读顺序):indra_ocr/pipeline.py
- 全核心并行 worker 池:indra_ocr/parallel.py
- 命令行入口:indra_ocr/cli.py
- 本地 Web 查看器(
indra-ocr-viewer):indra_ocr/viewer.py - 版本演进:CHANGELOG.md
【免费下载链接】indra
1M param OCR model - runs on CPU, 15x faster than tesseract, close to 1B+ param models in accuracy
相关推荐
indra-ocr完整解读:100万参数OCR模型为何能在纯CPU上跑出49页/秒,快Tesseract 11-17倍
indra ocr完整解读:100万参数OCR模型为何能在纯CPU上跑出49页/秒,快Tesseract 11 17倍 indra ocr 是一款只有 100
计算机视觉OCRMask2Former训练完全指南:从数据准备到模型优化的8个关键步骤
Mask2Former训练完全指南:从数据准备到模型优化的8个关键步骤 Mask2Former是一个强大的通用图像分割框架,能够统一处理全景分割、实例分割和语义
人工智能计算机视觉深度学习Tesseract OCR 快速模型项目推荐
Tesseract OCR 快速模型项目推荐 1. 项目基础介绍和主要编程语言 项目名称 : Tesseract OCR 快速模型 项目链接 : tessera
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考