RAGFlow:安装与体验

服务器需要有docker,或者直接访问官方提供的demo: https://demo.ragflow.io/

docker-compose安装

  • 需要确保 vm.max_map_count 不小于 262144 【更多】:
sysctl -w vm.max_map_count=262144  
  •  克隆仓库:
   $ git clone https://github.com/infiniflow/ragflow.git   
  • 进入 docker 文件夹,利用提前编译好的 Docker 镜像启动服务器:

   $ cd ragflow/docker   $ docker compose -f docker-compose-CN.yml up -d  

核心镜像文件大约 15 GB,可能需要一定时间拉取。请耐心等待。

体验

启动成功后,浏览器输入 http://服务器ip 或者直接访问官方demo https://demo.ragflow.io/

注册登录,进入后可以创建知识库,然后上传文档。

上传成功后,可以通过解析状态查看解析进度,也可以配置文档的parser解析方法,以更好的解析内容。

点击文档名称,可以进入文档详情,查看拆分的chunk,可以看到普通的文本是按照token拆分,还未实现按照段落语义拆分,差评。表格是单独抽取出来,独立存储的,将文档里的表格比较好的还原为了html表格,准确率尚可,这里好评。每个chunk有原文截图,点击后,右边的pdf预览,可以高亮当前的chunk所在区域,翻了下代码,使用的react-pdf-highlighter,体验挺好的一个组件。

DeepDoc CV模型

DeepDoc的模型应该是基于paddleOCR的模型去微调训练的,开源出来的模型是onnx格式的。

OCR识别

主要代码在ocr.py里,代码定义TextRecognizer 做文字识别,TextDetector 做文本框检测,OCR整合检测和识别功能,对外提供调用。

OCR的核心流程:

  • 创建 OCR 实例,load模型
  • 调用 __call__ 方法,传入图像数据。
    • 使用 TextDetector 进行文本检测,获取文本框坐标
    • 对每个文本框,使用 get_rotate_crop_image 方法进行旋转和裁剪
    • 使用 TextRecognizer 对裁剪后的图像进行文本识别
    • 过滤掉置信度低于阈值(0.5)的识别结果。
  • 返回最终的文本框坐标和识别结果。

版面分析

版面分析主要在recognizer.pylayout_recognizer.py里,定义了一个名为LayoutRecognizer 继承Recognizer的类,用于对文档图像进行板式分析,识别不同类型的区域,例如表格、标题、段落等。这里用的模型应该还是基于paddleocr里的版面分析模型去优化的。

先看Recognizer__call__ 方法,传入图像列表和置信度阈值:

def __call__(self, image_list, thr=0.7, batch_size=16):  res = []  imgs = []  for i in range(len(image_list)):  if not isinstance(image_list[i], np.ndarray):  imgs.append(np.array(image_list[i]))  else: imgs.append(image_list[i])  batch_loop_cnt = math.ceil(float(len(imgs)) / batch_size)  for i in range(batch_loop_cnt):  start_index = i * batch_size  end_index = min((i + 1) * batch_size, len(imgs))  batch_image_list = imgs[start_index:end_index]  inputs = self.preprocess(batch_image_list)  print("preprocess")  for ins in inputs:  bb = self.postprocess(self.ort_sess.run(None, {k:v for k,v in ins.items() if k in self.input_names})[0], ins, thr)  res.append(bb)  #seeit.save_results(image_list, res, self.label_list, threshold=thr)  return res

  • 先预处理,将图像列表转换为模型输入格式
  • 然后调用ort_sess执行onnx推理,最后postprocess,提取模型返回的布局信息,包括区域类型、坐标和置信度。

再看LayoutRecognizer__call__ 方法,这里是模型应用的工程代码部分,很多细节的小技巧,先上代码,里面加了一些注释:

def __call__(self, image_list, ocr_res, scale_factor=3,  thr=0.2, batch_size=16, drop=True):  # 可以过滤的垃圾数据  def __is_garbage(b):  patt = [r"^•+$", r"(版权归©|免责条款|地址[::])", r"\.{3,}", "^[0-9]{1,2} / ?[0-9]{1,2}$",  r"^[0-9]{1,2} of [0-9]{1,2}$", "^http://[^ ]{12,}",  "(资料|数据)来源[::]", "[0-9a-z._-]+@[a-z0-9-]+\\.[a-z]{2,3}",  "\\(cid *: *[0-9]+ *\\)"  ]  return any([re.search(p, b["text"]) for p in patt])  # 调用父类的模型识别  layouts = super().__call__(image_list, thr, batch_size)  # save_results(image_list, layouts, self.labels, output_dir='output/', threshold=0.7)  assert len(image_list) == len(ocr_res)  # Tag layout type  boxes = []  assert len(image_list) == len(layouts)  garbages = {}  page_layout = []  for pn, 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【介绍下Unity编辑器扩展】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

【17】JAVASE-集合专题【从零开始学JAVA】

Java零基础系列课程-JavaSE基础篇 Lecture:波哥 Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。…

【Java】java实现文件上传和下载(上传到指定路径/数据库/minio)

目录 上传到指定路径 一、代码层级结构 二、文件上传接口 三、使用postman进行测试; MultipartFile接收前端传递的文件:127.0.0.1:8082/path/uploadFile part接收前端传递的文件:127.0.0.1:8082/path/uploadFileByRequest 接收前端传递…

【webrtc】MessageHandler 2: 基于线程的消息处理:以PeerConnectionClient为例

PeerConnectionClient 前一篇 nullaudiopoller 并么有场景线程,而是就是在当前线程直接执行的, PeerConnectionClient 作为一个独立的客户端,默认的是主线程。 PeerConnectionClient 同时维护客户端的信令状态,并且通过OnMessage实现MessageHandler 消息处理。 目前只处理一…

常见公式的几何解释

本文旨在深入探讨常见数学公式的几何意义,通过直观的图形和解释,帮助读者更好地理解并掌握这些公式的本质。文章首先概述了公式与几何图形之间的紧密联系,然后选取了几个典型的数学公式,进行详细解析。每个公式都将配以相应的几何…

怎么做视频二维码更方便?在线一键生成视频活码二维码

现在经常会发现很多的二维码可以用来展示视频内容,通过这种方式来实现视频的快速分享与传播。二维码是一种成本低传播快的内容传播方式,很多的内容都可以通过生成二维码的方式来分享给其他人,可以同时扫描相同的二维码来获取内容,…

在线听歌播放器 梨花带雨网页音乐播放器 网页音乐在线听 源码

最新梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码下载 下 载 地 址 : runruncode.com/php/19749.html 梨花带雨播放器基于thinkphp6开发的XPlayerHTML5网页播放器前台控制面板,支持多音乐平台音乐解析。二开内容:修复播放器接口问题&am…

《半小时漫画论语》读书笔记

站在几年前看现在的我,感觉多了几分犹豫、内耗,少了几分勇敢。 今天重新读下论语,矫正一下人生态度。 一、论语是什么 论语,主要记载了孔子和他弟子们日常说的话、做的事。 孔子,读书人心中的圣人,中国历…

开关电源输入EMI滤波器设计与仿真

目录 开关电源输入EMI滤波器设计与仿真 摘要 1 .开关电源特点及噪声产生原因

气象数据nc数据矢量化处理解析及可视化

气象数据可视化是将气象学领域中复杂的数据集转化为图形或图像的过程,以直观展示天气现象、气候模式、趋势和预报结果。气象数据的可视化技术广泛应用于科学研究、气象预报、航空、航海、农业生产、灾害预警系统、城市规划、公众服务等领域。以下是一些关键的气象数…

SpringCloud 学习笔记 —— 一、背景

SpringCloud 学习笔记 —— 一、背景-CSDN博客 SpringCloud 学习笔记 —— 二、微服务与微服务架构-CSDN博客 SpringCloud 学习笔记 —— 三、SpringCloud 入门概述-CSDN博客 SpringCloud 学习笔记 —— 四、SpringCloud Rest 学习环境搭建:服务提供者-CSDN博客 …

C++证道之路第十五章友元、异常和其他

友元 友元函数: 友元函数不是类的成员函数,但能够访问类的私有(private)成员和保护(protected)成员。友元函数定义在类的外部,但在类的定义中通过friend关键字声明。友元函数可以是普通函数&a…

如何在Spring Boot中配置数据库密码加密

如何在Spring Boot中配置数据库密码加密? alibaba/druid Wiki GitHub 使用ConfigFilter alibaba/druid Wiki GitHub 巧用Druid数据源实现数据库连接密码的加密解密功能 import com.alibaba.druid.filter.config.ConfigTools;public class Testttt {public stat…

Android4.4真机移植过程笔记(二)

5、盘符挂载 先定义overlay机制路径,后面storage_list.xml要用到: 在路径: rk3188_android4.4.1/device/rockchip/OK1000/overlay/frameworks/base/core/res/res/xml/定义好,注意名字要和emmc的代码片段(往下面看&am…

maven 知识目录

maven 知识相关目录主要参考尚硅谷 赵伟风老师的视屏,参考链接为 http://www.atguigu.com/video/271/ 1、基础知识 maven入门和进阶 链接:https://blog.csdn.net/m0_59748326/article/details/138368887?spm1001.2014.3001.5501

Q1营收稳健增长,云从科技如何在“百模大战”的险中求稳?

自从迈入大模型时代,AI行业可谓“一天一个样”。越来越多的企业涌现,舆论热议从未断绝。 但就像所有技术必须经历的那些考验,在现实尺度下,AI顺利走进商业化世界,仍然是少部分玩家掌握的稀缺能力。个中原因不尽相同&a…

python 同一路径下把多个Excel文件合并成一个Excel文件的不同sheet表

import pandas as pd import os# 设定工作目录(如果所有Excel文件都在这个目录下) working_directory E:\\Program Files\\DM\\Chuwentaizahng\\合并# 获取工作目录下所有的Excel文件 excel_files [f for f in os.listdir(working_directory) if f.end…

Flutter笔记:Widgets Easier组件库(4)使用按钮组

Flutter笔记 Widgets Easier组件库(4):使用按钮组 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress…

JavaEE 初阶篇-深入了解网络原理中传输层的端口号与 UDP 协议报文格式

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 端口号概述 1.1 端口号的作用 1.2 端口号不能重复被多个进程绑定 2.0 传输层协议 - UDP 2.1 UDP 的特性 2.2 UDP 的报文格式 1.0 端口号概述 端口号是计算机网络中…

YOLOv5入门(二)处理自己数据集(标签统计、数据集划分、数据增强)

上一节中我们讲到如何使用Labelimg工具标注自己的数据集,链接:YOLOv5利用Labelimg标注自己数据集,完成1658张数据集的预处理,接下来将进一步处理这批数据,通常是先划分再做数据增强。 目录 一、统计txt文件各标签类型…