用YOLO分析文档布局

APPLICATION Jan 8, 2025

分析文档布局至关重要,因为它有助于正确解释和理解文档内容。随着 RAG 的兴起,它变得更加重要,因为它严重依赖于准确解析文档的能力。

RAG 系统经常与各种文档交互。例如,科学论文通常具有复杂的布局,包括图形、表格、参考文献和结构化部分。正确的解析对于避免内容混乱非常重要。如果操作不正确,LLM 可能会因“垃圾进,垃圾出”原则而失败。

但是,由于这个问题的复杂性,不可能将手工规则作为解决方案。最好的方法是训练机器学习模型。

1、我的解决方案

你可以在 yolo-doclaynet 中找到我的解决方案。在检查了几个模型和数据集后,我选择了 YOLO 作为基础模型,并选择 DocLayNet 作为训练数据。让我们深入了解更多细节。

YOLO 是最先进的视觉检测模型。它由领先的计算机视觉团队 Ultralytics 维护。该模型易于训练、评估和部署。此外,其大小足够紧凑,可以在浏览器或智能手机上运行。

DocLayNet 是一个人工标注的文档布局分割数据集,包含来自各种文档来源的 80,863 页。据我所知,它是文档布局分析的最高质量的数据集。你可以从此链接下载并查找更多信息。

2、演示

从 huggingface 下载预训练模型。选项包括 yolov8n-doclaynet、yolov8s-doclaynet 和 yolov8m-doclaynet。

通过执行 pip install ultralytics 安装 Ultralytics。如果遇到任何问题,请参阅官方文档

复制并修改此代码片段以输出检测结果:

from ultralytics import YOLO

img = cv2.imread(your_image_path, cv2.IMREAD_COLOR)
model = YOLO(your_model_path)
result = model.predict(img)[0]
print(result)

当你只能检查纯文本输出时,调试模型可能会很困难。幸运的是,可视化结果很简单:

from ultralytics.utils.plotting import Annotator, Colors

colors = Colors()
annotator = Annotator(img, line_width=line_width, font_size=font_size)
for label, box in zip(result.boxes.cls.tolist(), result.boxes.xyxyn.tolist()):
    label = int(label)
    annotator.box_label(
        [box[0] * width, box[1] * height, box[2] * width, box[3] * height],
        result.names[label],
        color=colors(label, bgr=True),
    )
annotator.save(
    os.path.join(os.path.dirname(image), "annotated-" + os.path.basename(your_image_path))
)

检查带标注的图像。以下是示例:

yolo-doclaynet 输出示例

3、基准测试

我还评估了整个 yolov8 系列在 DocLayNet 测试集上的 mAP50-95 性能:

标签 图像 包围盒 yolov8n yolov8s yolov8m yolov8l yolov8x
标题 4983 1542 0.682 0.721 0.746 0.75 0.753
脚注 4983 387 0.614 0.669 0.696 0.702 0.717
公式 4983 1966 0.655 0.695 0.723 0.75 0.747
列表项 4983 10521 0.789 0.818 0.836 0.841 0.841
页脚 4983 3987 0.588 0.61 0.64 0.641 0.655
页眉 4983 3365 0.707 0.754 0.769 0.776 0.784
图片 4983 3497 0.723 0.762 0.789 0.796 0.805
节头 4983 8544 0.709 0.727 0.742 0.75 0.748
表格 4983 2394 0.82 0.854 0.88 0.885 0.886
文本 4983 29917 0.845 0.86 0.876 0.878 0.877
标题 4983 334 0.762 0.806 0.83 0.846 0.84
全部 4983 66454 0.718 0.752 0.775 0.783 0.787

以下是不同模型大小的 mAP50-95 性能概述:


原文链接:How to analyze document layout by YOLO

汇智网翻译整理,转载请标明出处

Tags