用YOLO分析文档布局
分析文档布局至关重要,因为它有助于正确解释和理解文档内容。随着 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))
)
检查带标注的图像。以下是示例:
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
汇智网翻译整理,转载请标明出处