OCR vs VLM:为什么你需要两者(以及混合方法如何取胜)
Source: Dev.to
请提供您希望翻译的完整文本内容,我将为您翻译成简体中文并保留原有的格式、Markdown 语法以及技术术语。谢谢!
Source: …
文档处理:OCR + 视觉语言模型
多年来,文档处理一直停留在二元选择上:使用 传统 OCR 以获得速度和可靠性,或使用 AI 视觉模型 以实现理解。业界将两者视为竞争的方案,但这种框架是错误的。
如今最好的文档处理系统 同时结合两者。
- 传统 OCR 负责它擅长的工作:以高准确率、低计算成本提取原始文本。
- 视觉语言模型(VLM) 负责 OCR 做不到的工作:理解版面、检测样式、重建文档结构。
这不是竞争,而是堆叠。
1. 传统 OCR
光学字符识别自 1950 年代就已出现。像 Tesseract 或基于云的 API 这样的现代 OCR 引擎在一个特定任务上表现卓越:将像素转换为字符。
当你把扫描文档交给传统 OCR 引擎时,它会执行以下几个步骤:
- 二值化 – 将图像转换为黑白,以分离文本。
- 版面分析 – 区分文本区域和图像区域。
- 行与词分割 – 将文本切分为可处理的单元。
- 字符识别 – 使用训练好的模型将字形匹配为字符。
- 后处理 – 应用语言模型修正识别错误。
输出是一串文本(有时带有边界框和基本的格式提示)。
典型 OCR 输出结构
ocr_result = {
"text": "Invoice #12345\nDate: 2024-01-15\nTotal: $1,250.00",
"confidence": 0.94,
"blocks": [
{"text": "Invoice #12345", "bbox": [100, 50, 300, 80]},
{"text": "Date: 2024-01-15", "bbox": [100, 90, 280, 120]},
{"text": "Total: $1,250.00", "bbox": [100, 130, 280, 160]}
]
}
这在处理直接的文档时效果良好:扫描清晰、版面简单、文本密集。
OCR 的根本盲点
| OCR 失去的内容 | 为什么重要 |
|---|---|
| 排版与样式 – 例如,“Introduction” 是公司蓝色的 24 pt 粗体标题。 | 没有视觉样式信息。 |
| 空间关系 – 多列排版常被弄乱。 | 阅读顺序错误。 |
| 表格 – 单元格被展平成线性文本。 | 结构需要猜测,往往错误。 |
| 页眉页脚 – 重复的页眉会变成重复内容。 | 提取的文本中出现噪声。 |
| 图片与图形 – 被忽略或缺少上下文(位置、说明)。 | 缺失视觉信息。 |
| 章节层级 – 无法区分章节标题与子标题。 | 大纲信息丢失。 |
结果是一个 平面文本文件,所有文档语义都被剥离。对于简单的搜索索引可能已经足够,但对于文档重建则毫无用处。
2. 视觉语言模型(VLM)
VLM 采用根本不同的方式。它们不是把文本当作字符序列处理,而是把 整页作为图像 来处理,并基于视觉理解生成结构化输出。
VLM “看到” 文档的方式类似于人类:
- 识别出顶部的大号粗体文字是 标题。
- 理解带边框的网格是 表格。
- 注意到页脚的页码 不应 成为正文的一部分。
VLM 风格的结构化输出
vlm_result = {
"title": "Q4 Financial Report",
"sections": [
{
"heading": "Executive Summary",
"level": 1,
"content": "Revenue increased by 23% year-over-year..."
},
{
"heading": "Regional Breakdown",
"level": 2,
"table": {
"headers": ["Region", "Revenue", "Growth"],
"rows": [
["North America", "$2.1M", "+18%"],
["Europe", "$1.8M", "+27%"],
["Asia Pacific", "$0.9M", "+31%"]
]
}
}
]
}
{
"document": {
"title": "Annual Report 2023",
"author": "Acme Corp",
"sections": [
{
"heading": "Executive Summary",
"content": "..."
},
{
"heading": "Financial Overview",
"subsections": [
{
"heading": "Revenue",
"content": "..."
},
{
"heading": "Expenses",
"content": "..."
}
]
}
]
},
"metadata": {
"page_count": 12,
"has_cover_page": true,
"contains_charts": true
}
}
VLM 在理解文档结构方面表现出色。它们能够识别:
- 文档类型(invoice、contract、report、letter)
- 章节层级和嵌套(h1‑h6)
- 表格及其单元格关系
- 图形、图表及其标题
- 阅读顺序