最后更新: 20 Aug, 2026

比较开源 OCR API 的输出格式质量
当工程师评估光学字符识别(OCR)引擎时,字符错误率(CER)和词错误率(WER)通常主导基准测试。虽然识别准确率至关重要,但它在生产环境中只能解决一半的问题。
如果您正在解析复杂的多列 PDF、从收据中提取项目行,或将白皮书导入 LLM 嵌入流水线,原始文本转储会产生巨大的工程开销。没有布局感知、逻辑阅读顺序或坐标数据的字符字符串会迫使您的团队编写脆弱的启发式解析器。
现代文档工作流的真正区别因素是 输出格式质量:引擎在提供坐标、阅读顺序、结构层次和表格数据方面的一致性和清晰度。
以下是针对四个领先的 开源 OCR 引擎——Tesseract、PaddleOCR、EasyOCR 和 Surya OCR——进行的面向工程的比较,评估它们的输出在自动化流水线中的表现。
常见输出格式:工程师真正需要的
每个 OCR API 对检测到的文本的打包方式各不相同。了解这些格式有助于确定您的流水线需要多少后处理:
- 纯文本 (
.txt): 最简的表示方式。它会去除所有位置信息元数据,并将多列布局压缩为水平读取,这可能会打乱段落。 - 归档标准 (
hOCR,ALTO XML): 基于 XML/HTML 的格式,是图书馆归档的标准。它们在 DOM 节点中嵌入坐标、字体估计和置信度评分。对于文档重建极其稳健,但对微服务而言体积庞大。 - 结构化 JSON: 现代 Web 后端的默认选择。提供坐标数组(边界框或多边形)、置信度评分以及层次化的块/行/词结构。
- Markdown (
.md) / HTML 表格: 检索增强生成(RAG)的现代标准。保留语义章节(标题、列表、粗体文本)和表格矩阵,无需下游空间重建。
1. Tesseract OCR
由 Google 维护,Tesseract 仍然是开源 OCR 的基础主力。其架构在传统页面分割算法的基础上,辅以基于 LSTM 的字符引擎。
本机输出格式
- 主要输出: 纯文本、hOCR(HTML)、ALTO XML、TSV(制表符分隔值)和可搜索的 PDF/A。
- 布局感知: 基于规则的启发式方法,通过页面分割模式(PSM)。
输出格式分析
- 优势所在: Tesseract 的
TSV和hOCR导出是标准化且可预测的。单个 TSV 导出会返回结构化列,包括level、page_num、block_num、par_num、line_num、word_num、left、top、width、height和conf。如果您正在将纸质档案转换为可搜索的 PDF,或需要严格遵守机构标准,Tesseract 能够原生处理,无需自定义粘合代码。 - 不足之处: Tesseract 没有原生的 JSON API。在 Python 或 Node.js 中使用其输出需要解析 XML/TSV 文件或使用诸如
pytesseract的封装。其布局引擎也难以处理非标准的列流,常常会混合相邻列的文本,除非提供手动的边界裁剪。
Tesseract Output Profile:
├── Plain Text: Clean for standard single-column pages
├── XML / hOCR: First-class, rock-solid support
├── JSON: Requires custom wrappers or TSV-to-JSON transforms
└── Markdown / Tables: Poor (requires custom reconstruction)
2. PaddleOCR
在百度的 PaddlePaddle 框架支持下,PaddleOCR 因其轻量级模型、广泛的多语言覆盖以及专用文档分析工具包(PP-Structure)而获得了广泛采用。
本机输出格式
- 主要输出: Python 列表/字典、原始 JSON、可视化叠加层,以及通过 PP-Structure 的结构化 HTML。
- 布局感知度: 高(使用深度学习模型进行布局解析、方向分类和表格恢复)。
输出格式分析
- 优势所在: 标准 PaddleOCR 返回 4 点多边形坐标(
[[x1, y1], [x2, y2], [x3, y3], [x4, y4]])以及文本字符串和置信度分数。这能够优雅地处理倾斜或弯曲的文字。然而,其真正的强大之处在于 PP-Structure 套件,它能够检测布局区域(标题、正文、表格、图形),并将表格直接解析为有效的 HTML 字符串(<table>...</table>)。这消除了需要手动从边界框计算单元格跨距的步骤。 - 不足之处: 基础 API 返回的嵌套数组在不同版本之间缺乏统一的属性键。对于结构化应用,开发者通常需要编写中间适配器来标准化字段名称(
bbox、text、confidence)。
PaddleOCR Output Profile:
├── Plain Text: Clean across multiple orientations
├── XML / hOCR: Limited (JSON is the preferred interchange format)
├── JSON: Highly detailed with 4-point polygons
└── Markdown / Tables: Excellent (direct HTML table generation via PP-Structure)
3. EasyOCR
EasyOCR 由 JaidedAI 基于 PyTorch 构建,旨在快速被开发者采用。它将 CRAFT(字符区域感知文本检测)与深度学习识别网络封装成一个简洁的 API。
本机输出格式
- 主要输出: Python 列表,包含坐标元组、识别的字符串和置信度值。
- 布局感知度: 低到中等(仅文本行检测;不进行文档级结构解析)。
输出格式分析
- 优势所在: 返回对象的简洁性无与伦比:
[ ( [[x1, y1], [x2, y2], [x3, y3], [x4, y4]], "Total Balance Due", 0.9842, ) ]
将此输出映射到标准 REST 响应或直接序列化为 GeoJSON/自定义模式,只需几行代码。它在自然场景文字、车牌和独立的文档裁剪上表现可靠。
- 不足之处: EasyOCR 并未进行整体文档布局分析。它无法识别表格、标题层级或跨复杂列的阅读顺序。将 EasyOCR 用于双栏学术论文时,常会产生交错的文本片段,除非与上游布局检测模型(如 YOLO 或 LayoutLM)配合使用。
EasyOCR Output Profile:
├── Plain Text: Good for isolated text blocks
├── XML / hOCR: Not supported natively
├── JSON: Trivial to generate from Python tuples
└── Markdown / Tables: None (requires external layout pipelines)
4. Surya OCR
Surya 是一个现代深度学习 OCR 框架,专为复杂文档理解和 LLM 摄取流水线设计。
原生输出格式
- 主要输出: 基于 Pydantic 的 JSON 结构、逻辑阅读顺序索引、布局边界区域以及行检测多边形。
- 布局感知: 极高(基于深度学习的布局分析和阅读顺序排序)。
输出格式分析
- 优势所在: Surya 直接应对现代 AI 工程的挑战。它不假设文档从上到下、从左到右读取,而是部署专用模型来预测 阅读顺序。它将行分组为逻辑语义块,自然处理多列跨越,并通过 Pydantic 输出带类型的结构。这使得下游导入向量数据库和 Markdown 转换器变得直接且可靠。
- 不足之处: 作为一个较新且更重的基于 PyTorch 的框架,Surya 需要专用 GPU 计算才能匹配像 Tesseract 或量化 Paddle 模型等优化的 C++ 引擎的吞吐量。它并未针对 hOCR 或 ALTO 等传统归档标准。
Surya Output Profile:
├── Plain Text: Naturally ordered according to human reading flow
├── XML / hOCR: Not supported
├── JSON: Fully typed, modern Pydantic schemas
└── Markdown / Tables: Clean semantic blocks ideal for Markdown synthesis
逐项对比矩阵
| 能力 / 格式 | Tesseract OCR | PaddleOCR (PP-Structure) | EasyOCR | Surya OCR |
|---|---|---|---|---|
| 本机 hOCR / ALTO XML | 本机支持 | 仅第三方 | 无 | 无 |
| 边界框几何 | 轴对齐 (x, y, w, h) | 四点多边形 | 四点多边形 | 多边形 + 布局块 |
| 表格解析 | 仅坐标 TSV | HTML 表格字符串 | 无 | 单元格坐标网格 |
| 阅读顺序检测 | 基于规则(在多列时换行) | 机器学习布局分析 | 基本行分组 | 专用阅读顺序模型 |
| 直接 JSON 架构 | 需要转换 | Python 字典 / JSON | Python 列表 / JSON | 已类型化的 Pydantic 模型 |
| 理想的下游目标 | 归档 PDF,遗留 DMS | 表单/收据数据,ERP | 快速脚本,场景文本 | LLM摄取,RAG架构 |
流水线推荐:您应该选择哪一个?
- 选择 Tesseract 如果您的合规要求需要标准化的
hOCR、ALTO XML或可搜索的 PDF/A 交付物,用于政府或档案记录。 - 选择 PaddleOCR 如果您正在处理包含复杂无边框表格的运营财务文档(发票、收据、税表),这些表格必须转换为 HTML 或电子表格。
- 选择 EasyOCR 如果您需要一个轻量级、符合 Python 风格的库来检测并提取自然图像、街道标志或裁剪的 UI 元素中的文本,而无需配置麻烦。
- 选择 Surya OCR 如果您将非结构化的业务报告、研究论文和技术指南输入到 LLM 或向量搜索引擎中,而逻辑阅读顺序和清晰的结构边界至关重要。
常见问题解答(FAQ)
1. 哪种开源 OCR 输出格式最容易输入到大型语言模型中?
Surya OCR 的阅读顺序感知 JSON 和 PaddleOCR PP-Structure 的 HTML 表格为 LLM 提示上下文和 RAG 索引提供了最清晰的表示。
2. Tesseract 能否原生生成 JSON 响应而无需第三方工具?
不,Tesseract 本身直接输出文本、TSV、PDF 和 hOCR/ALTO XML;要生成 JSON 需要使用中间解析器将其 TSV 或 hOCR 输出转换。
3. 四点多边形坐标与轴对齐的边界框有何不同?
轴对齐的矩形框使用 [x, y, width, height],假设文本是平面的;而四点多边形提供四组坐标对,能够准确包围旋转、倾斜或弯曲的文本行。
4. 哪个引擎直接将表格结构输出为代码,而不是松散的坐标?
PaddleOCR 的 PP-Structure 模块将检测到的表格边界重建为完整的 HTML 表格标签(<table>、<tr>、<td>),避免使用自定义空间数学。
5. 为什么标准的 EasyOCR 输出在多列科学论文上表现不佳?
EasyOCR 基于局部邻近性而非全局布局层次来识别文本行,这会导致相邻列的文字交叉,除非使用外部布局引擎进行约束。