OCR表格识别效果对比

发布于:2025-06-26 ⋅ 阅读:(22) ⋅ 点赞:(0)

出发点

在当前数字化转型加速的背景下,光学字符识别(OCR)技术尤其是表格识别领域正经历从传统算法向AI大模型的范式转移。我最近通过系统性技术调研发现,针对开源OCR工具在表格识别场景的横向对比研究(传统基于规则和轻量级深度学习的OCR方案和新兴的多模态大模型方案)存在显著空白。
基于此,本研究拟以2025年6月为时间节点,从多种复杂表格出发,对主流开源方案(包括PaddleOCR、MonkeyOCR、PP-StructureV3、Qwen2-VL)展开对比实验,旨在为工业界选型提供数据支撑。

模型简单介绍及部署方案

PP-StructureV3

体验地址
安装部署
通用版面解析v3产线强化了版面区域检测、表格识别、公式识别的能力,增加了多栏阅读顺序的恢复能力、结果转换 Markdown 文件的能力,在多种文档数据中,表现优异,可以处理较复杂的文档数据,您可以基于模型产线训练您自己的数据,训练后在此处体验效果。

MonkeyOCR

github

# 模型下载
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download --resume-download echo840/MonkeyOCR --local-dir echo840/MonkeyOCR --local-dir-use-symlinks False

# 环境部署
git clone https://github.com/Yuliang-Liu/MonkeyOCR.git
cd MonkeyOCR/
sudo docker run --gpus all -it --volumes-from datavol -v $PWD/:/usr/src/myapp -p 5012:80 --name monkeyocr -w /usr/src/myapp pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel /bin/bash

apt-get update
apt-get install libglib2.0-0 -y
apt-get install libgl1 -y

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

pip install -e .
pip install lmdeploy==0.8.0

# 修改model_configs.yaml
# 指定weights.doclayout_yolo、weights.layoutreader、models_dir、chat_config.weight_path为你存放权重的路径

# 使用
python parse.py demo/demo1.pdf -o ./output -c model_configs.yaml 

Nanonets OCR-s

体验地址

# 模型下载
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download --resume-download nanonets/Nanonets-OCR-s --local-dir nanonets/Nanonets-OCR-s --local-dir-use-symlinks False

# 环境部署
sudo docker run --gpus all -it --volumes-from datavol -v $PWD/:/usr/myapp -p 5011:80 --name nanonets pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel /bin/bash
apt-get update
apt-get install vim

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install transformers pillow accelerate
pip install flash_attn-2.7.4.post1+cu12torch2.5cxx11abiFALSE-cp311-cp311-linux_x86_64.whl 

模型使用方法

from PIL import Image
from transformers import AutoTokenizer, AutoProcessor, AutoModelForImageTextToText
model_path = "/usr/downloads/nanonets/Nanonets-OCR-s"
model = AutoModelForImageTextToText.from_pretrained(
    model_path,
    torch_dtype="auto",
    device_map="auto",
    attn_implementation="flash_attention_2"
)
model.eval()
tokenizer = AutoTokenizer.from_pretrained(model_path)
processor = AutoProcessor.from_pretrained(model_path)

def ocr_page_with_nanonets_s(image_path, model, processor, max_new_tokens=4096):
    prompt = """Extract the text from the above document as if you were reading it naturally. Return the tables in html format. Return the equations in LaTeX representation. If there is an image in the document and image caption is not present, add a small description of the image inside the <img></img> tag; otherwise, add the image caption inside <img></img>. Watermarks should be wrapped in brackets. Ex: <watermark>OFFICIAL COPY</watermark>. Page numbers should be wrapped in brackets. Ex: <page_number>14</page_number> or <page_number>9/22</page_number>. Prefer using ☐ and ☑ for check boxes."""
    image = Image.open(image_path)
    messages = [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": [
            {"type": "image", "image": f"file://{image_path}"},
            {"type": "text", "text": prompt},
        ]},
    ]
    text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
    inputs = processor(text=[text], images=[image], padding=True, return_tensors="pt")
    inputs = inputs.to(model.device)
    output_ids = model.generate(**inputs, max_new_tokens=max_new_tokens, do_sample=False)
    generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(inputs.input_ids, output_ids)]
    output_text = processor.batch_decode(generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True)
    return output_text[0]

 
image_path = "/usr/myapp/resume_1.png"
result = ocr_page_with_nanonets_s(image_path, model, processor, max_new_tokens=15000)
print(result)

对比

表格情况1

原图

在这里插入图片描述

PP-StructureV3

新员工入职申请表

岗位:填表日期:年月日员工编号:

入职部门:

出生年月 籍贯 血 型 姓名 性别 身高 健康状况 民族 政治面貌 最高学历 体重 婚姻状况
婚姻状况 毕业院校 专业职称
专业 邮箱 居住地址:
固定电话 身份证号 户籍类型 手机
城镇□ 非城镇□ 户籍所在地 (省) (市) 关系 (区)派出所
姓名 称谓 工作单位 职务 联系电话
技能特长 及爱好 计算机水平: 外语:语种 级别 其它技能: 个人爱好及特长: 工作经历 起止日期 工作单位 职务/主要工作职责 离职原因 薪酬 证明人及电话
工作单位 薪酬 证明人及电话
起止日期 学校/培训机构 专业/培训内容 所获学历/资质 脱产/在职 证明人及电话
能否出差 是否曾在我公司应聘 能否加班 能否接受工作调动 否□是□(姓名 是否有亲属或朋友在我公司工作 授权承诺:授权用人单位及其第三方代表对表格中的各项信息进行背景调查,并免除因此产生的一切责任。 个人中明:以上内容真实无误,并与前用人单位已完全解除劳动合同,若有不实处,愿无条件接受公司处 罚甚至辞退,且不要求任何补偿;入职后完全服从公司工作安排,严格遵守各项规章制度,努力做好本职工作。
签名:

MonkeyOCR

新员工入职申请表
入职部门: 岗位: 填表日期: 年 月 日 员工编号:

姓名 性别 出生年月 籍贯
民族 身高 体重 血型
政治面貌 健康状况 婚姻状况 专业职称
最高学历 专业 毕业院校
固定电话 手机 邮箱
身份证号 居住地址
户籍类型 城镇口 户籍所在地 (省)(市)(区)派出所
紧急联系电话 联系人 关系
家庭成员 姓名 称谓 工作单位 职务 联系电话
技能特长
及爱好
计算机水平:外语:语种级别其它技能:
个人爱好及特长:
工作经历
起止日期 工作单位 职务/主要工作职责 离职原因 薪酬 证明人及电话
教育背景
起止日期 学校/培训机构 专业/培训内容 所获学历/资质 脱产/在职 证明人及电话
能否出差 能否加班 能否接受工作调动
是否曾在我公司应聘 是否有亲属或朋友在我公司工作 否□是□(姓名
授权承诺:授权用人单位及其第三方代表对表格中的各项信息进行背景调查,并免除因此产生的一切责任。
个人申明:以上内容真实无误,并与前用人单位已完全解除劳动合同,若有不实处,愿无条件接受公司处
罚甚至辞退,且不要求任何补偿;入职后完全服从公司工作安排,严格遵守各项规章制度,努力做好本职工作。
签名:日期:年月日

Nanonets OCR-s

新员工入职申请表

入职部门: ____________ 岗位: ____________ 填表日期: 年 月 日 员工编号: ____________

姓名 性别 出生年月 籍贯 寸照
民族 身高 体重 血型
政治面貌 健康状况 婚姻状况 专业职称
最高学历 专业 毕业院校
固定电话 手机 邮箱
身份证号
户籍类型 城镇口 非城镇口 户籍所在地 (省) (市) (区) 派出所
紧急联系电话 联系人 关系
家庭成员 姓名 称谓 工作单位 职务 联系电话
技能特长及爱好 计算机水平: _______________ 外语: 语种_______级别_______ 其它技能: ____________
个人爱好及特长:
工作经历
起止日期 工作单位 职务/主要工作职责 离职原因 薪酬 证明人及电话
教育背景
起止日期 学校/培训机构 专业/培训内容 所获学历/资质 脱产/在职 证明人及电话
能否出差 能否加班 能否接受工作调动
是否曾在我公司应聘 是否有亲属或朋友在我公司工作 否口 是口 (姓名____________)

授权承诺:授权用人单位及其第三方代表对表格中的各项信息进行背景调查,并免除因此产生的一切责任。
个人中明:以上内容真实无误,并与前用人单位已完全解除劳动合同,若有不实处,愿无条件接受公司处罚甚至辞退,且不要求任何补偿;入职后完全服从公司工作安排,严格遵守各项规章制度,努力做好本职工作。
签名:____________ 日期:____年____月____日

表格情况2

原图

在这里插入图片描述

PP-StructureV3

基本信息
姓名 出生日期 (照片) 性别 民族 A r{$
身份证号 联系方式
职业 现工作单位 入团时间
入团地点
发展团员编号 (2017年后入
团员档案 保存情况 1.原始入团申请书 有 无 2.原始入团志愿书 无 3.团员证 无 4.团组织关系介绍信 无
时间 年月至 年月 所在单位(学校)及职务 证明人
年月至 年月
年月至 年月 年月至 年月
年月至 年月

MonkeyOCR

< td rowspan="1" colspan="4">
基本信息
姓名 性别 民族 (照片)
出生日期 箱货
身份证号
联系方式 职业
现工作单位
入团时间 入团地 点
发展团>员编号 (2017年6月入团需地.
团员档案
保存情> 况
1.原始入团申请书□有□无
2.原始>入团志愿书□有□无
3.团员证□有□无
4.团组织关系介绍信□有□无
时间 所在单位(学校)及职务 证明人
年月至年月
年月至 年月
年月至年月
年 月至年月
年月至年月
年月至年月
年月至年月

Nanonets OCR-s

中国共产主义青年团团员登记表
(2023年版)

基本信息

姓名 性别 民族 (照片)
出生日期 籍贯
身份证号
联系方式 职业
现工作单位
入团时间 入团地点
发展团员编号 (2017年6入团志愿书)
团员档案保存情况 1. 原始入团申请书 ☐ 有 ☐ 无
2. 原始入团志愿书 ☐ 有 ☐ 无
3. 团员证 ☐ 有 ☐ 无
4. 团组织关系介绍信 ☐ 有 ☐ 无
时间 所在单位(学校)及职务 证明人
年月至年月
年月至年月
年月至年月
年月至年月

网站公告

今日签到

点亮在社区的每一天
去签到