DocLayout-YOLO
DocLayout-YOLO是一款专注于文档布局分析的AI工具,基于YOLO-v10框架开发,通过生成多样化的合成数据和全局到局部的自适应感知机制,提升对复杂文档结构的识别能力。它解决了传统方法在处理多类型文档时精度不足、泛化能力弱的问题,尤其擅长识别表格、段落、标题等元素的位置与结构。工具提供预训练模型和在线演示,支持快速部署,适用于需要自动化处理文档结构的场景。其核心创新包括:利用Mesh-candidate BestFit算法生成高质量合成数据集DocSynth-300K,通过结构优化模块实现多尺度元素精准检测,以及结合全局视角与局部细节的双重感知机制。开发者、研究人员及文档处理相关从业者均可使用,尤其适合需要高效分析PDF、扫描件等非结构化文档的场景。工具已集成至PDF-Extract-Kit,并提供详细文档与示例,便于快速上手。
使用场景
某金融公司需要处理大量客户合同,但传统OCR和布局分析工具无法准确识别表格、段落和图表等复杂结构,导致人工校对成本高且效率低。
没有 DocLayout-YOLO 时
- 手动标注合同结构需耗费3小时/份,错误率高达15%
- 表格边框识别失败导致数据错位,需重做整份文档解析
- 多页合同的分页逻辑无法识别,合并后出现内容错乱
- 专业术语区域(如财务指标)的边界检测精度不足
- 每日处理500份文档需20人天,且无法应对新类型合同
使用 DocLayout-YOLO 后
- 自动识别表格、段落、图表等12类元素,标注效率提升12倍
- 表格边框检测准确率提升至98.7%,数据错位问题消失
- 支持多页文档的逻辑分页,合并后内容保持原顺序
- 专业术语区域的边界识别精度达99.2%,减少人工校对
- 每日处理500份文档仅需3人天,且可自动适应新文档类型
核心价值:通过全局到局部的自适应感知机制,实现复杂文档结构的高精度自动解析,显著降低人工干预成本。
运行环境要求
- Linux
- macOS
需要 NVIDIA GPU,显存 8GB+,CUDA 11.7+
16GB+

快速开始
English | 简体中文
DocLayout-YOLO: 通过多样化合成数据与全局到局部自适应感知增强文档布局分析
Official PyTorch implementation of DocLayout-YOLO.
摘要
我们提出DocLayout-YOLO,基于YOLO-v10构建了一个实时且鲁棒的文档布局检测模型。该模型通过多样化文档预训练和针对布局检测的结构优化进行增强。在预训练阶段,我们引入Mesh-candidate BestFit,将文档合成视为二维装箱问题,并创建了大规模多样化合成文档数据集DocSynth-300K。在模型结构优化方面,我们提出了一种具有全局到局部可控性的模块,用于精确检测不同尺度下的文档元素。
新闻 🚀🚀🚀
2024.10.25 🎉🎉 Mesh-candidate Bestfit 代码已发布。Mesh-candidate Bestfit 是一个自动流程,可生成大规模、高质量且视觉吸引人的文档布局检测数据集。教程和示例数据见 此处。
2024.10.23 🎉🎉 DocSynth300K数据集 已发布在 🤗Huggingface,DocSynth300K 是一个大规模且多样化的文档布局分析预训练数据集,可显著提升模型性能。
2024.10.21 🎉🎉 在线演示 可在 🤗Huggingface 上使用。
2024.10.18 🎉🎉 DocLayout-YOLO 已在 PDF-Extract-Kit 中实现,用于文档上下文提取。
2024.10.16 🎉🎉 论文 现在可在 ArXiv 上获取。
快速入门
在线演示 现已可用。对于本地开发,请按照以下步骤操作:
1. 环境设置
按照以下步骤设置环境:
conda create -n doclayout_yolo python=3.10
conda activate doclayout_yolo
pip install -e .
注意: 如果仅需用于推理,可通过pip直接安装:
pip install doclayout-yolo
2. 预测
可以使用脚本或SDK进行预测:
脚本
运行以下命令使用脚本进行预测:
python demo.py --model path/to/model --image-path path/to/imageSDK
以下是使用SDK进行预测的示例:
import cv2 from doclayout_yolo import YOLOv10 # 加载预训练模型 model = YOLOv10("path/to/provided/model") # 进行预测 det_res = model.predict( "path/to/image", # 要预测的图像 imgsz=1024, # 预测图像大小 conf=0.2, # 置信度阈值 device="cuda:0" # 使用的设备(例如,'cuda:0' 或 'cpu') ) # 注释并保存结果 annotated_frame = det_res[0].plot(pil=True, line_width=5, font_size=20) cv2.imwrite("result.jpg", annotated_frame)
我们提供在DocStructBench上微调的模型用于预测,能够处理各种文档类型。模型可从 此处 下载,示例图片见 assets/example 目录。
注意: 对于PDF内容提取,请参考 PDF-Extract-Kit 和 MinerU。
注意: 感谢 NielsRogge,DocLayout-YOLO 现在支持直接从 🤗Huggingface 实现,可按以下方式加载模型:
filepath = hf_hub_download(repo_id="juliozhao/DocLayout-YOLO-DocStructBench", filename="doclayout_yolo_docstructbench_imgsz1024.pt")
model = YOLOv10(filepath)
或直接使用 from_pretrained:
model = YOLOv10.from_pretrained("juliozhao/DocLayout-YOLO-DocStructBench")
更多详情见 此PR。
注意: 感谢 luciaganlulu,DocLayout-YOLO 可进行批量推理和预测。不同于 demo.py 中单张图像传入 model.predict,应传入图像路径列表。此外,由于在 YOLOv11 之前未实现批量推理,需手动修改 此处 的 batch_size。
DocSynth300K 数据集
数据下载
使用以下命令下载数据集(约113G):
from huggingface_hub import snapshot_download
# 下载 DocSynth300K
snapshot_download(repo_id="juliozhao/DocSynth300K", local_dir="./docsynth300k-hf", repo_type="dataset")
# 如果下载中断且文件不完整,可恢复下载
snapshot_download(repo_id="juliozhao/DocSynth300K", local_dir="./docsynth300k-hf", repo_type="dataset", resume_download=True)
数据格式化与预训练
若想进行 DocSynth300K 预训练,使用 format_docsynth300k.py 将原始 .parquet 格式转换为 YOLO 格式。转换后的数据将存储在 ./layout_data/docsynth300k。
python format_docsynth300k.py
进行 DocSynth300K 预训练,请使用此 命令。我们默认使用8块GPU进行预训练。为了达到最佳性能,可根据下游微调数据分布或设置调整超参数,如 imgsz、lr 等。
注意: 由于YOLO原始数据加载代码存在内存泄漏,大规模数据集的预训练可能意外中断,使用 --pretrain last_checkpoint.pt --resume 可恢复预训练过程。
在公共DLA数据集上的训练与评估
数据准备
- 指定数据根路径
找到您的 ultralytics 配置文件(Linux 用户可在 $HOME/.config/Ultralytics/settings.yaml) 中查找)并修改 datasets_dir 为项目根路径。
- 从以下链接下载准备好的 yolo 格式 D4LA 和 DocLayNet 数据并放入
./layout_data:
| 数据集 | 下载 |
|---|---|
| D4LA | 链接 |
| DocLayNet | 链接 |
文件结构如下:
./layout_data
├── D4LA
│ ├── images
│ ├── labels
│ ├── test.txt
│ └── train.txt
└── doclaynet
├── images
├── labels
├── val.txt
└── train.txt
训练与评估
训练使用 8 块 GPU,全局批量大小为 64(每块设备 8 张图像)。详细设置和检查点如下:
| 数据集 | 模型 | DocSynth300K 预训练? | 图像尺寸 | 学习率 | 微调 | 评估 | AP50 | mAP | 检查点 |
|---|---|---|---|---|---|---|---|---|---|
| D4LA | DocLayout-YOLO | ❌ | 1600 | 0.04 | 命令 | 命令 | 81.7 | 69.8 | 检查点 |
| D4LA | DocLayout-YOLO | ✅ | 1600 | 0.04 | 命令 | 命令 | 82.4 | 70.3 | 检查点 |
| DocLayNet | DocLayout-YOLO | ❌ | 1120 | 0.02 | 命令 | 命令 | 93.0 | 77.7 | 检查点 |
| DocLayNet | DocLayout-YOLO | ✅ | 1120 | 0.02 | 命令 | 命令 | 93.4 | 79.7 | 检查点 |
DocSynth300K 预训练模型可从 此处 下载。评估时请将 checkpoint.pt 改为要评估的模型路径。
致谢
代码基于 ultralytics 和 YOLO-v10 开发。
感谢他们的出色工作!
星星历史
如果您认为该项目有用,请为仓库添加一个“星标”。看到您的关注让我们感到非常兴奋,这激励我们继续投入该项目!
引用
@misc{zhao2024doclayoutyoloenhancingdocumentlayout,
title={DocLayout-YOLO: Enhancing Document Layout Analysis through Diverse Synthetic Data and Global-to-Local Adaptive Perception},
author={Zhiyuan Zhao and Hengrui Kang and Bin Wang and Conghui He},
year={2024},
eprint={2410.12628},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2410.12628},
}
@article{wang2024mineru,
title={MinerU: An Open-Source Solution for Precise Document Content Extraction},
author={Wang, Bin and Xu, Chao and Zhao, Xiaomeng and Ouyang, Linke and Wu, Fan and Zhao, Zhiyuan and Xu, Rui and Liu, Kaiwen and Qu, Yuan and Shang, Fukai and others},
journal={arXiv preprint arXiv:2409.18839},
year={2024}
}
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
tesseract
Tesseract 是一款历史悠久且备受推崇的开源光学字符识别(OCR)引擎,最初由惠普实验室开发,后由 Google 维护,目前由全球社区共同贡献。它的核心功能是将图片中的文字转化为可编辑、可搜索的文本数据,有效解决了从扫描件、照片或 PDF 文档中提取文字信息的难题,是数字化归档和信息自动化的重要基础工具。 在技术层面,Tesseract 展现了强大的适应能力。从版本 4 开始,它引入了基于长短期记忆网络(LSTM)的神经网络 OCR 引擎,显著提升了行识别的准确率;同时,为了兼顾旧有需求,它依然支持传统的字符模式识别引擎。Tesseract 原生支持 UTF-8 编码,开箱即用即可识别超过 100 种语言,并兼容 PNG、JPEG、TIFF 等多种常见图像格式。输出方面,它灵活支持纯文本、hOCR、PDF、TSV 等多种格式,方便后续数据处理。 Tesseract 主要面向开发者、研究人员以及需要构建文档处理流程的企业用户。由于它本身是一个命令行工具和库(libtesseract),不包含图形用户界面(GUI),因此最适合具备一定编程能力的技术人员集成到自动化脚本或应用程序中