使用PDFDeal批量处理PDF
前言
pdfdeal能更轻松简单地处理 PDF,提取可读文本,用 OCR 识别图像文本并清理格式,使其更适合构建知识库。使用Doc2X以达到最佳效果。
项目地址:https://menghuan1918.github.io/pdfdeal-docs/zh/
该项目集成了多种处理PDF方案,经博主测试还是Doc2x效果最佳,具体效果比对结果可以查看这里: https://noedgeai.feishu.cn/wiki/K1NGwjuuqiI9nukgapEcUAALnLh
下方给出实际使用中,如何批量处理某一文件夹的笔记示例:
环境配置
配置对应的库和虚拟环境:
conda create -n pdfdeal python=3.11
conda activate pdfdeal
pip install --upgrade pdfdeal
确定对应虚拟环境激活后,导入对应的Api_Key,Api_Key可以在Doc2x用户设置里获取
欢迎走我的邀请链接,双方可以各获得5天Pro时长:https://doc2x.noedgeai.com/?inviteCode=BQWRIY
然后导入环境变量:
export DOC2X_APIKEY = "Your API Key"
至此,环境配置完毕,下一步进行文件处理。
文件处理
开发者给出了较多的文件处理格式支持,这里我仅针对自己实际需求,示例将PDF转为Markdown文件:
from pdfdeal import Doc2X
from pdfdeal import get_files
Client = Doc2X()
file_list, rename_list = get_files(
path="./input", mode="pdf", out="md_dollar"
)
success, failed, flag = Client.pdf2file(
pdf_file=file_list,
output_path="./output_name",
output_names=rename_list,
output_format="md_dollar",
)
print(success)
print(failed)
print(flag)
更多参数可以参考这里: https://menghuan1918.github.io/pdfdeal-docs/zh/guide/pdfdeal/
其中注意 out 和 output_format
参数要保持一致
不过,使用该方式转化出来的文件有一个小缺点,他的文件夹会和源文件相同,但文件夹里的文件名命名似乎是随机生成的一串字符,这在做为类似FastGPT后置流程导入时非常不便溯源。
etc.
0191496d-27bd-7cca-b7e7-68c3db865c38_md_dollar.md
于是我让Claude帮我写了一段重命名脚本,完整脚本见下:
import os
def rename_md_files(root_path):
for dirpath, dirnames, filenames in os.walk(root_path):
for filename in filenames:
if filename.endswith('.md'):
old_file_path = os.path.join(dirpath, filename)
parent_folder_name = os.path.basename(dirpath)
new_file_name = f"{parent_folder_name}.md"
new_file_path = os.path.join(dirpath, new_file_name)
# 如果新文件名已存在,添加数字后缀
counter = 1
while os.path.exists(new_file_path):
new_file_name = f"{parent_folder_name}_{counter}.md"
new_file_path = os.path.join(dirpath, new_file_name)
counter += 1
os.rename(old_file_path, new_file_path)
print(f"重命名: {old_file_path} -> {new_file_path}")
# 使用示例
root_path = "output" # 替换为你的根文件夹路径
rename_md_files(root_path)
记得修改要处理的文件路径即可,它会查找.md
文件,然后将其命名为所在文件夹的名字。
全文完 :)
下一篇
评论列表 (0条):
加载更多评论 Loading...