链载Ai

标题: 让Dify知识库“看懂”图片!一款MinerU 工作流解决方案 [打印本页]

作者: 链载Ai    时间: 昨天 18:16
标题: 让Dify知识库“看懂”图片!一款MinerU 工作流解决方案

您是否正在遭遇以下困扰?有一个重要资料是纯图片格式,有一个文档是扫描版的PDF,想上传到dify的知识库做解析,可Dify根本读取不到。为了解决这个问题,我们可以使用MinerU来完美解决,让你的Dify知识库拥有解析图片的能力。本文将详细介绍一个工作流,使你的Dify知识库也拥有OCR的能力。

(本文Dify版本为1.3.1)

前期准备

部署MinerU-API

参考本公众号前两篇文章《在Dify中使用MinerU提取PDF》《MinerU-API | 支持多格式解析,进一步提升Dify文档能力》,获取MinerU-API代码,再用docker部署。本文就不再多赘述。

docker run -d --gpus all --network docker_ssrf_proxy_network --name mineru-api -v minerupaddleocr:/root/.paddleocr mineru-api:v0.3

创建Dify知识库

创建一个Dify知识库,设定好基础的Embedding模型和Rerank模型

创建Dify知识库

打开知识库,在地址栏里找到该知识库的ID,并记住它。

获取知识库ID

知识库->API界面,生成一个API密钥,用于接口调用。

生成知识库API密钥

搭建MinerU知识库工作流

工作流概述

整个工作流有三个代码块,分别用于处理接口参数、MinerU解析文档、创建Dify知识库文档

Process Parameters:用于处理接口参数,这边主要处理/datasets/{dataset_id}/document/create-by-text接口的参数。

MinerU提取:将PDF、图片转成Markdown格式的文本。

知识库-文档创建:调用Dify/datasets/{dataset_id}/document/create-by-text,在知识库中创建文档。Python代码如下:

importrequests
defmain(api_key,file_name,content, api_params, dataset_id):
headers = {
'Authorization':f'Bearer{api_key}',
'Content-Type':'application/json',
}

api_params.update({
"name": file_name,
"text": content,
})

response = requests.post(
f'http://api:5001/v1/datasets/{dataset_id}/document/create-by-text',
headers=headers,
json=api_params,
)

return{"result":response.text}

效果测试

以一份网页打印出的PDF文档为例,对比直传知识库,和使用MinerU工作流的效果。

直传知识库效果

很显然,通过直传知识库,虽然文档能上传成功,可是里面的内容用Dify原生的知识库能力,完全无法解析。

通过MinerU工作流创建文档

通过MinerU工作流创建文档,显然工作流成功执行,并且返回了接口调用结果。在知识库里查看一下。

知识库查看MinerU文档创建情况

文档创建以后,Dify会自动对文档进行索引。待文档索引完成后,进行召回测试。






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5