图文RAG组件:360LayoutAnalysis中文论文及研报图像分析

AI应用开发相关目录

本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧
适用于具备一定算法及Python使用基础的人群

  1. AI应用开发流程概述
  2. Visual Studio Code及Remote Development插件远程开发
  3. git开源项目的一些问题及镜像解决办法
  4. python实现UDP报文通信
  5. python实现日志生成及定期清理
  6. Linux终端命令Screen常见用法
  7. python实现redis数据存储
  8. python字符串转字典
  9. python实现文本向量化及文本相似度计算
  10. python对MySQL数据的常见使用
  11. 一文总结python的异常数据处理示例
  12. 基于selenium和bs4的通用数据采集技术(附代码)
  13. 基于python的知识图谱技术
  14. 一文理清python学习路径
  15. Linux、Git、Docker常用指令
  16. linux和windows系统下的python环境迁移
  17. linux下python服务定时(自)启动
  18. windows下基于python语言的TTS开发
  19. python opencv实现图像分割
  20. python使用API实现word文档翻译
  21. yolo-world:"目标检测届大模型"
  22. 爬虫进阶:多线程爬虫
  23. python使用modbustcp协议与PLC进行简单通信
  24. ChatTTS:开源语音合成项目
  25. sqlite性能考量及使用(附可视化操作软件)
  26. 拓扑数据的关键点识别算法
  27. python脚本将视频抽帧为图像数据集
  28. 图文RAG组件:360LayoutAnalysis中文论文及研报图像分析

文章目录


简介

最近要做一些图文RAG研究,其中,面向图文交叠的文档难以解析,因此对文档的图文内容进行详细定位就成了关键。

该开源项目基于YOLO8,并结合优质中文研报场景数据,训练出了轻量级符合需求的图文分析模型。

开源地址:

https://github.com/360AILAB-NLP/360LayoutAnalysis

模型权重:

https://huggingface.co/qihoo360/360LayoutAnalysis

部署等工作可以通过镜像网站完成。

实际使用

其模型文件只有几MB,环境文件依赖搭建过程也很快,基本没有什么问题出现。

测试数据:

测试结果:

对于研报识别,主要针对9类进行识别:

0: '文本' 1: '标题' 2: '页眉' 3: '页脚' 4: '插图'

5: '表格' 6: '目录' 7: '图注' 8: '表注'

基本上覆盖了一般图文文件中的内容种类,其识别结果后处理难度低,具有较高的实用价值。

代码

python 复制代码
from ultralytics import YOLO
import cv2

import cv2

def draw_rectangles_with_custom_labels_and_confidences(image_path, regions, labels, confidences):
    # 读取原始图像
    image = cv2.imread(image_path)
    if image is None:
        print("Error: Image not found.")
        return

    # 确保区域、标签和置信度列表长度一致
    if len(regions) != len(labels) or len(regions) != len(confidences):
        print("Error: The number of regions, labels, and confidences must match.")
        return

    # 遍历所有区域,标签和置信度
    for i, (top_left, bottom_right) in enumerate(regions):
        # 绘制矩形框
        color = (0, 255, 0)  # 绿色框,可以根据需要更改颜色
        cv2.rectangle(image, top_left, bottom_right, color, 2)

        # 计算文本标签的位置
        text = f"{labels[i]} {confidences[i]:.2f}"
        text_width, text_height = cv2.getTextSize(text, cv2.FONT_HERSHEY_SIMPLEX, 0.5, 2)[0]
        text_x = top_left[0]
        text_y = top_left[1] - text_height - 10

        # 创建一个背景矩形用于文本
        bg_color = (0, 255, 0)  # 与框颜色相同,可以根据需要更改颜色
        cv2.rectangle(image, (text_x, text_y), (text_x + text_width, text_y + text_height + 10), bg_color, -1)

        # 在矩形框上方添加文本标签
        cv2.putText(image, text, (text_x, text_y + text_height + 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0), 2)

    # 保存图像(可选)
    cv2.imwrite('annotated_image'+image_path, image)



model_path = '/home/super/lyq/360LayoutAnalysis/report-8n.pt'  # 权重路径
model = YOLO(model_path)
modulue = {0: 'Text', 1: 'Title', 2: 'Header', 3: 'Footer', 4: 'Figure', 5: 'Table', 6: 'Toc', 7: 'Figure caption', 8: 'Table caption'}


image_path = '/home/super/lyq/360LayoutAnalysis/360LayoutAnalysis/case/TEST/4.png'  # 待预测图片路径
result = model(image_path, save=True, conf=0.5, save_crop=False, line_width=2)
# 解析result
tlbrxy_ls = [((int(i[0]),int(i[1])),(int(i[2]),int(i[3]))) for i in result[0].boxes.xyxy.cpu().numpy().tolist()]
type_ls = [modulue[i] for i in result[0].boxes.cls.cpu().numpy().tolist()]
confidence_ls = result[0].boxes.conf.cpu().numpy().tolist()
len_result = len(confidence_ls)



for index in range(len_result):
    draw_rectangles_with_custom_labels_and_confidences(image_path,tlbrxy_ls,type_ls,confidence_ls)



'''
print(result[0].names)         # 输出id2label map
print(result[0].boxes)         # 输出所有的检测到的bounding box
print(result[0].boxes.xyxy)    # 输出所有的检测到的bounding box的左上和右下坐标
print(result[0].boxes.cls)     # 输出所有的检测到的bounding box类别对应的id
print(result[0].boxes.conf)    # 输出所有的检测到的bounding box的置信度
'''
相关推荐
mailangduoduo3 分钟前
pytorch入门级项目--基于卷积神经网络的数字识别
人工智能·pytorch·cnn
量子-Alex6 分钟前
【目标检测】【BiFPN】EfficientDet:Scalable and Efficient Object Detection
人工智能·目标检测·计算机视觉
Fansv58714 分钟前
深度学习-7.超参数优化
人工智能·深度学习
松果财经1 小时前
蓝思科技赋能灵伴科技:AI眼镜产能与供应链双升级
人工智能·科技
魔道不误砍柴功1 小时前
Java中的Stream API:从入门到实战
java·windows·python
xinghuitunan1 小时前
时间转换(acwing)c/c++/java/python
java·c语言·c++·python
青松@FasterAI1 小时前
【NLP算法面经】本科双非,头条+腾讯 NLP 详细面经(★附面题整理★)
人工智能·算法·自然语言处理
萧鼎2 小时前
智能自动化新纪元:AI与UiPath RPA的协同应用场景与技术实践
人工智能·ui·rpa
果冻人工智能2 小时前
去中心化 AI:赋权还是混乱?
人工智能·深度学习·机器学习·架构·去中心化·区块链·ai员工
tekin2 小时前
Python 高级数据结构操作全解析:从理论到实践
数据结构·python·集合set·高级数据结构·集合操作·队列操作·堆操作