文档解析 OCR 实战指南:自动提取 PDF / 图片中的结构化数据

0 阅读4分钟

在很多企业系统中,文档解析 OCR已经成为必备能力,例如:

  • 财务系统自动解析发票
  • 合同自动提取关键信息
  • PDF 文档转结构化数据
  • 表格自动录入系统

如果完全依赖人工录入,不仅效率低,还容易出错。

因此越来越多系统开始接入 文档解析 OCR API

本文从工程实践角度,讲清楚文档 OCR 的实现思路以及如何快速接入。


一、什么是文档解析 OCR

很多人认为 OCR 只是:

图片 → 文字

但在真实业务中,文档 OCR 往往需要做到:

  • 提取段落
  • 提取表格
  • 提取字段
  • 输出结构化数据

也就是:

文档 → 版面分析 → OCR识别 → 数据结构化

二、文档 OCR 的核心技术流程

一个完整的文档解析流程通常包含以下步骤:

文档输入
   ↓
版面分析
   ↓
文本检测
   ↓
文字识别
   ↓
结构化输出

1 文档预处理

常见输入包括:

  • PDF 文档
  • 扫描图片
  • 拍照文档

为了提高识别率,一般需要:

  • 去噪
  • 矫正倾斜
  • 提高对比度

2 版面分析(Layout Analysis)

版面分析的作用是识别:

  • 标题
  • 段落
  • 表格
  • 图片

例如一份 PDF 文档可能包含:

  • 标题区域
  • 表格区域
  • 文本区域

只有识别出这些区域,后续 OCR 才能准确解析。


3 文本检测

这一阶段负责:

找到所有文字位置

输出结果通常是:

文字区域坐标

例如:

(x1,y1,x2,y2)

4 文本识别

这一阶段才是真正的:

文字内容识别

常见技术包括:

  • CRNN
  • Transformer OCR
  • 深度学习序列模型

5 数据结构化

这一步是 业务系统最需要的能力

例如一张表格:

| 商品 | 数量 | 金额 |

解析后可以输出:

[ {商品:A, 数量:10, 金额:100}]

这样就可以直接写入数据库。


三、文档 OCR API 接入实战

如果完全自研文档 OCR,通常需要:

  • OCR 模型
  • 表格识别模型
  • 版面分析模型

开发周期可能 数月以上

因此很多系统会直接接入 文档解析 API

image.png


Step1 上传文档

前端上传 PDF 或图片。

<input type="file">

Step2 调用 OCR API

可以直接通过接口提交文件。

接口文档:market.shiliuai.com/doc/doc-ext…

示例代码:

# 接口文档:https://market.shiliuai.com/doc/doc-extract
# OCR 调用python示例
import requests
import base64
import json

# 请求接口
URL = "https://ocr-api.shiliuai.com/api/doc_extract/v1"

# 图片/pdf文件转base64
def get_base64(file_path):
    with open(file_path, "rb") as f:
        data = f.read()
    return base64.b64encode(data).decode("utf8")

def demo(appcode, file_path):
    # 请求头
    headers = {
        "Authorization": "APPCODE %s" % appcode,
        "Content-Type": "application/json"
    }

    # 请求体
    b64 = get_base64(file_path)
    data = {
        "file_base64": b64,
        "prompt": ""
    }

    # 请求
    response = requests.post(url=URL, headers=headers, json=data)
    content = json.loads(response.content)
    print(content)

if __name__ == "__main__":
    appcode = "你的APPCODE"
    file_path = "本地文件路径"
    demo(appcode, file_path)

Step3 解析返回结果

OCR API 返回通常包含:

  • 文本内容
  • 表格数据
  • 坐标信息
  • JSON 结构

示例:

成功示例:
{
    'code': 200,
    'msg': 'OK',
    'msg_cn': '成功',
    'success': True,
    'file_id': file id,
    'request_id': request id,
    'data': {
        "page_count": 5,        // int, 文件页面总数
        "process_pages": 5,     // int, 处理页面数
        "content": content      // 文档提取结果
    }
}

四、文档 OCR 常见应用场景

在实际项目中,文档解析 OCR 常见应用包括:

1 财务系统

自动识别:

  • 发票
  • 报销单
  • 收据

2 企业文档管理

批量解析:

  • PDF 文档
  • 扫描合同
  • 档案文件

3 RPA 自动化

机器人自动读取:

  • 报表
  • 表格
  • 订单信息

4 AI 工具网站

例如:

  • PDF 转文字
  • 文档数据提取
  • 表格识别

五、文档 OCR 常见问题

图片模糊

建议:

  • 图片分辨率 ≥ 1000px

文档倾斜

需要:

  • 自动旋转矫正

表格识别

推荐使用:

  • 专门的表格 OCR

六、什么时候用在线 OCR,什么时候用 API

简单判断:

在线工具

适合:

  • 临时识别
  • 少量文档
  • 手动操作

如果只是想测试效果,可以先在线识别一份文档看看结果。识别效果可以参考下面图片 image.png


API 接入

适合:

  • 批量文档处理
  • 系统自动化
  • SaaS 平台

七、总结

文档解析 OCR 不只是文字识别,更重要的是:

  • 版面理解
  • 表格提取
  • 数据结构化

对于需要处理大量文档的系统来说,接入 OCR API 通常是效率最高的方案。