WildDoc:拍照场景下的文档理解——数据真香
论文:https://arxiv.org/abs/2505.11015
代码:https://github.com/bytedance/WildDoc
注:个人这篇论文的理论价值并不高,但是数据比较香。
一. 论文简介
在文档理解领域,多模态大模型(MLLMs)正以惊人的速度进化。从基础文档图像识别到复杂文档理解,它们在扫描或数字文档基准测试(如 DocVQA、ChartQA)中表现出色,这似乎表明MLLMs已很好地解决了文档理解问题。 然而,现有的文档理解基准存在两大核心缺陷:
- 脱离真实场景:现实中文档多为手机/相机拍摄的纸质文件或屏幕截图,面临光照不均、物理扭曲(褶皱 / 弯曲)、拍摄视角多变、模糊 / 阴影、对焦不准等复杂干扰;
- 无法评估鲁棒性:现有基准未模拟真实环境的复杂性和多样性,导致模型在实际应用中表现存疑。
针对每个文档数据,都在不同的条件下,用相机拍摄了四张图片,如下图a所示。下图b中展示了不同的样例图片。
核心结论:文档理解在真实拍照情况下,文档理解效果下降明显,建议未来的研究需要考虑真实世界的文档。
二. 数据
该论文开源了3万多张测试数据,这应该是该论文最大的贡献了,获取数据的方式如下:
from datasets import load_dataset
import os
import json
from PIL import Image
from tqdm import tqdm# 确保目录存在
os.makedirs("./images", exist_ok=True)
os.makedirs("./Q&A", exist_ok=True)# 加载数据集
ds = load_dataset("ByteDance/WildDoc")print(f"数据集特征: {ds['test'].features}")
print(f"测试集大小: {len(ds['test'])}")for i in tqdm(range(len(ds['test']))):try:example = ds['test'][i]img = example['image']question = example['question']answer = example['answer']# 检查图像类型# print(f"图像 {i} 类型: {type(img)}")if hasattr(img, 'save'):# 如果是PIL Image对象,直接保存img.save(f"./images/{i}.png")# print(f"保存图像 {i} 成功")# 保存对应的问答json文件qa_data = {"question": question,"answer": answer}json_filename = f"./Q&A/{i}.json"with open(json_filename, 'w', encoding='utf-8') as f:json.dump(qa_data, f, ensure_ascii=False, indent=4)# print(f"保存问答文件 {i}.json 成功")else:print(f"图像 {i} 不是PIL Image对象: {type(img)}")except Exception as e:print(f"处理图像 {i} 时出错: {e}")print("\n完成所有文件保存")
运行上述代码,在当前文件下会创建两个子文件夹images(存储图片)、Q&A(存储问答对)。
# 问答对示例
{"question": "What is the difference in value between Lamb and Corn?","answer": "0.57"
}