RAG中pdf解析的方法全览

embedded/2024/11/15 0:39:50/

RAG中解析PDF的方法

pdf_2">一 pdf格式都有哪些

1.机器生成的pdf文件,包含图像,文本,可以被编辑

2.传统扫描文档,表现为图像,不能被编辑

3.带OCR的扫描文档。可能转OCR的过程中带入了错误。

pdf_10">二 pdf解析全科指南
全面指南———用python提取PDF中各类文本内容的方法 https://www.luxiangdong.com/2023/10/05/extract/
img
https://mp.weixin.qq.com/s/SjdoTv1htO6Ti98g3qgBjQ

image-20240506152725865

pdfplumber_26">1.pdfplumber

https://blog.csdn.net/fuhanghang/article/details/122579548
pdfplumber_32">pdfplumber的主要类和方法

image-20240301105350730

image-20240301105435256

pdfplumber_38">pdfplumber对于表格的提取

image-20240301113228381

参考https://github.com/jsvine/pdfplumber/blob/stable/examples/notebooks/extract-table-ca-warn-report.ipynb
代码:
pdf = pdfplumber.open("../pdfs/ca-warn-report.pdf")
p0=pdf.pages[0]
im = p0.to_image()  #display 第一页
table = p0.extract_table() 抽取其中最大的表格import pandas as pd
df = pd.DataFrame(table[1:], columns=table[0])
for column in ["Effective", "Received"]:df[column] = df[column].str.replace(" ", "")  使用panda来吧table抽取到的数据转成dataFrame格式

2.layout parser

layoutparser 是一个基于深度学习的文档图像分析工具包,它提供了布局检测、OCR识别、布局分析等接口,适用于处理和分析扫描文档或图像中的文字。

https://zhuanlan.zhihu.com/p/391138225

首先,将pdf的每一页转为图像,以便对其执行OCR来提取文本块。

pip install pdf2image
images = convert_from_bytes(open('FILE PATH', 'rb').read())  #将pdf的每一页转为图像并保存在内存中
image = np.array(image) #将图像转为像素值数据

解析pdf论文的话,使用特定模型

image-20240301173308990

参考 https://zhuanlan.zhihu.com/p/602615194

LayoutParser为常见的OCR工具提供了统一的接口,示例代码如下:

ocr_agent = lp.TesseractAgent()  layourparser要与Tesseract 这个包相结合

image-20240301180620799

使用代码如下

import layoutparser as lp
image = cv2. imread (" image_file ") # load images
model = lp. Detectron2LayoutModel ("lp :// PubLayNet / faster_rcnn_R_50_FPN_3x / config ")
layout = model . detect ( image )

3.paddlepaddle的工具

https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.7/ppstructure

该代码从pdf中结构出各个标题层级的关系,又在word中重建该结构。

图片

pdf_111">4.其他解析pdf获得子标题的方法

1.先ocr,再版面解析
https://www.textin.com/experience/pdf-to-word
2.用fitz提取,再写正则规则匹配
3.参考论文 
https://arxiv.org/pdf/2308.14978.pdf
4.google的document ai
5.参考如下项目
https://github.com/OKC13/General-Documents-Layout-parser
6.使用如下接口 
https://apifox.com/apidoc/shared-a55f1a3d-4871-41b7-8f1a-3af83807410b/api-120356017

http://www.ppmy.cn/embedded/102191.html

相关文章

了解Redis数据持久化(下)

4.AOF 写后日志,避免宕机数据丢失 4.1 AOF说明 AOF日志存储的是Redis服务器的顺序指令序列只记录对内存进行修改的指令append-only file(AOF)AOF主要是主线程在执行,将日志写入磁盘的过程中,如果磁盘压力太大&#x…

ArcGIS Pro技术应用

GIS是利用电子计算机及其外部设备,采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲,它是在一定的地域内,将地理空间信息和 一些与该地域地理信息相关的属性信息结合起来,达到对地理和属性信息的综合管理。GIS的…

【算法基础实验】图论-Dijkstra最短路径

理论知识 边的放松 边的放松(Edge Relaxation)是图算法中的一个关键操作,主要用于解决最短路径问题。它的核心思想是在遍历图的过程中,通过比较和更新路径的长度,逐步找到从起点到每个顶点的最短路径。 边的放松过程…

在Mac电脑安装Homebrew并且配置环境变量

问题:如何在Mac电脑安装Home brew? 解决:国外的链接容易下载安装失败,国内的镜像速度快,成功率高,进入终端输入以下你所需的链接命令即可: 国外链接:/bin/bash -c "$(curl -fsS…

人工智能 | AutoGPT理念与应用

简介 在 ChatGPT 问世之后,大家很容易就发现其依然具备一些很难解决的问题,比如: Token 超出限制怎么办?(目前最新的 GPT4 支持最多 8,192 tokens)。如何完全自动化?任务需要多步串联&#xf…

【机器学习练习】糖尿病预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、数据预处理 1. 数据导入 import numpy as np import pandas as pd import seaborn as sns from sklearn.model_selec…

Level3 — PART 4 — 机器学习算法 — 关联规则

目录 基本概念 评估指标 支持度 置信度 提升度 规则发现 Apriori算法 原理 案例 Python中实现Apriori算法 FP-Growth 案例 Python中实现FP-Growth 模拟题 CDA LEVEL III 模拟题(一) CDA LEVEL III 模拟题(二) Apriori算法是一种经典的关联规则数据…

Ruby调试秘籍:探索常用调试工具与技巧

标题:“Ruby调试秘籍:探索常用调试工具与技巧” 摘要 Ruby作为一种灵活且富有表现力的编程语言,深受开发者喜爱。然而,与任何编程语言一样,Ruby程序的开发过程中难免会遇到需要调试的场景。幸运的是,Ruby…