用于RAG增强
大约 3 分钟
注意
0.3.1版本后更新输出为logging
,默认情况下仅会输出Warnings及以上等级的信息。如您希望查看处理过程,请设置logging
等级为INFO:
import logging
httpx_logger = logging.getLogger("httpx")
httpx_logger.setLevel(logging.WARNING)
logging.basicConfig(level=logging.INFO)
为方便演示,以下代码示例中均设置了logging
等级为INFO。
警告
如果您想要转换PDF文件为其他格式,请使用Client.pdf2file函数
Client.pdfdeal
处理 PDF 文件,将其转换为更适合 RAG 系统的文件。
参数
参数 | 类型 | 是否必须 | 默认值 | 描述 |
---|---|---|---|---|
pdf_file | str 或 list | 是 | - | 输入文件路径,或输入文件路径列表 |
output_format | str | 否 | "pdf" | 输出格式,接受 'pdf' , 'md' 或 'texts' 。默认值为 "pdf" |
output_names | list | 否 | None | 自定义输出文件名,必须与 pdf_file 长度相同,如果文件名包含文件夹路径,系统将自动创建相应的文件夹结构。默认值为 None |
output_path | str | 否 | "./Output" | 输出路径。默认值为 "./Output" |
convert | bool | 否 | True | 是否将 [ 转换为 $ ,[[ 转换为 $$ 。默认值为 True |
返回值
返回一个包含三个元素的元组 (list1, list2, bool)
,其顺序与输入文件顺序保持一致:
list1
(list
): 成功处理的文件路径列表- 元素为处理后的文件路径(字符串)
- 处理失败时为空字符串
list2
(list
): 处理失败的文件列表- 元素为字典,包含两个键:
'error'
: 错误信息(字符串)'path'
: 处理失败的文件路径(字符串)
- 处理成功时,两个键的值均为空字符串
- 元素为字典,包含两个键:
bool
: 处理状态True
: 至少有一个文件处理失败False
: 全部文件处理成功
注意事项
list1
和list2
的长度相同- 当
output_format
为"texts"
时,直接返回文本,不会保存到文件
示例
注意
请确保您已经参照初始化一节在环境变量中配置好密匙了
注意
当输出格式为PDF时,转换过程不会保留原始文档的排版格式。转换后的PDF仅包含识别出的文本内容,按照原有页数生成新PDF。这种处理方式可能导致文本超出页面边界,影响人类阅读。不过这并不影响RAG系统读取内容。
这样的好处是能够保留文本所在的PDF页数,方便在RAG系统中溯源。
识别一个文件夹中所有pdf,输出为识别后的pdf
为了保持原有文件结构,使用内置的目录生成工具生成需要处理的图片路径:
from pdfdeal import Doc2X
from pdfdeal import get_files
client = Doc2X()
file_list, rename = get_files(path="tests/pdf", mode="pdf", out="pdf")
success, failed, flag = client.pdfdeal(
pdf_file=file_list,
output_path="./Output/test/multiple/pdfdeal",
output_names=rename,
)
print(success)
print(failed)
print(flag)
其中./tests/pdf
的文件结构为:
pdf
├── sample_bad.pdf
├── sample.pdf
└── test
└── sampleB.pdf
注意
sample_bad.pdf
是一个用于测试异常处理的损坏的文件,处理失败是正常的。
预期输出:
Get exception Upload file error! 400:{"code":"bad_request","msg":"参数错误或无效请求"}. Retrying in 1 seconds.
Waiting for processing: 0% -- uuid: 49993be3-d3b6-4990-b8bf-9989a2942bfb
Processing file: 6% -- uuid: 0199cdd8-48b0-4987-a795-2dd11e73918e
Get exception Upload file error! 400:{"code":"bad_request","msg":"参数错误或无效请求"}. Retrying in 2 seconds.
Processing file: 6% -- uuid: 49993be3-d3b6-4990-b8bf-9989a2942bfb
Get exception Upload file error! 400:{"code":"bad_request","msg":"参数错误或无效请求"}. Retrying in 4 seconds.
PDFDEAL Progress: 2/3 files successfully processed.
-----
Failed deal with tests/pdf/sample_bad.pdf with error:
Upload file error! 400:{"code":"bad_request","msg":"参数错误或无效请求"}
-----
['./Output/test/multiple/pdfdeal/sample.pdf', '', './Output/test/multiple/pdfdeal/test/sampleB.pdf']
[{'error': '', 'path': ''}, {'error': Exception('Upload file error! 400:{"code":"bad_request","msg":"参数错误或无效请求"}'), 'path': 'tests/pdf/sample_bad.pdf'}, {'error': '', 'path': ''}]
True
处理后的文件结构:
pdfdeal
├── sample.pdf
└── test
└── sampleB.pdf