Administrator
发布于 2026-01-31 / 2 阅读
0
0

29.【PaddleOCR】将你的古早PDF全部变成AI友好的的MarkDown

这是一个非常现代且干净的开发环境配置方式!使用 Scoop 安装的 uv,并且不依赖系统注册表中的 Python,这完全符合“隔离环境”的最佳实践。

由于 PaddleOCR 依赖较多(如 PaddlePaddle 深度学习框架),使用 uv 来创建一个独立的虚拟环境是最佳选择。

请按照以下步骤一步步操作:

第一步:准备项目目录和 Python 环境

因为你的 Python 是由 uv 管理的,我们不需要去管系统里有没有 Python,直接让 uv 为这个项目拉取一个兼容的 Python 版本。建议使用 Python 3.10 或 3.11(PaddlePaddle 对极新版 Python 3.12+ 的支持有时会有延迟,3.10 是最稳的)。

  1. 创建项目文件夹(在 PowerShell 或 CMD 中):

    PowerShell

    mkdir MyKnowledgeBase
    cd MyKnowledgeBase
    
  2. 创建虚拟环境并指定 Python 版本:

    运行以下命令,uv 会自动下载一个独立的 Python 3.10 并创建环境:

    PowerShell

    uv venv --python 3.10
    

    成功后,你会看到目录下多了一个 .venv 文件夹。

第二步:激活虚拟环境

在 Windows 上,即使是用 uv 创建的,也建议先激活环境,这样后续的命令会更直观。

PowerShell

# PowerShell
.venv\Scripts\activate

# 如果是 CMD
.venv\Scripts\activate.bat

激活后,你的命令行前面应该会出现 (MyKnowledgeBase) 或者 (.venv) 的提示。

第三步:安装 PaddlePaddle (引擎)

PaddleOCR 需要基于 PaddlePaddle 框架运行。

注:如果你没有独立显卡或不想配置 CUDA,请安装 CPU 版本(体积小,配置简单,做文档解析足够了)。

使用 uv pip 进行安装(速度极快):

PowerShell

# 安装 CPU 版本 (推荐初学者)
uv pip install paddlepaddle

# 如果你有 NVIDIA 显卡且配置好了 CUDA 11.8+,想用 GPU 加速,请用:
# uv pip install paddlepaddle-gpu==2.6.1 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
# (GPU配置较复杂,建议先用CPU跑通)

第四步:安装 PaddleOCR 和必要的依赖

接下来安装 OCR 主程序。

PowerShell

uv pip install "paddleocr>=2.7"

⚠️ Windows 常见报错预警:

PaddleOCR 依赖 shapely 和 lanms-neo 等库。uv 通常能很好地处理预编译的 whl 包。

  • 如果安装过程中报错提示 Microsoft Visual C++ 14.0 is required,你需要下载安装 Visual Studio Build Tools(勾选 "C++ 桌面开发")。

  • 但在 uv + Python 3.10 环境下,通常能直接拉取到编译好的 wheel 包,无需编译。

第五步:验证安装 & 下载模型

安装完成后,我们需要验证一下是否能运行。PaddleOCR 第一次运行时会自动下载轻量级模型(约几十MB)。

在命令行中输入以下命令测试(确保虚拟环境已激活):

PowerShell

paddleocr --help

如果没有报错并输出了帮助信息,说明安装成功!


第六步:实战——将 PDF 转为 Markdown (结合上一轮的方案)

既然环境好了,我们直接通过 Python 脚本来实现你在上一轮想要的**“PDF 资料转 Markdown 知识库”**功能。

在你的项目目录下新建一个文件 pdf_to_md.py,粘贴以下代码:

Python

import os
from paddleocr import PPStructure, save_structure_res
from paddleocr.ppstructure.recovery.recovery_to_doc import sorted_layout_boxes, convert_info_docx

# 1. 初始化版面分析引擎 (专门用于提取结构)
# table=False 如果你的书里表格不多,关掉可以快一点;如果表格多一定要开
# recovery=True 是关键,它允许恢复版面
engine = PPStructure(show_log=True, image_orientation=True, table=True, recovery=True)

# 2. 设置你的文件路径
pdf_path = './test_book.pdf' # 替换把你本地的PDF文件名
output_folder = './output_result'

# 3. 开始处理
print(f"开始处理: {pdf_path} ...")
# PaddleOCR会自动将PDF转图处理,img_idx是页码
result = engine(pdf_path, img_idx=None) 

# 4. 保存结果
save_structure_res(result, output_folder, os.path.basename(pdf_path).split('.')[0])

# 5. 重点:生成 Markdown 内容
# PaddleOCR默认输出可能是txt或docx,我们需要提取里面的结构化文本
print("正在生成 Markdown...")

# 这里的逻辑是遍历每一页的识别结果
full_markdown_content = ""

for page_result in result:
    # 每一页的结构化数据
    # res 是一个列表,包含这一页所有的区块(标题、正文、表格)
    # 这里我们做一个简单的拼接,更复杂的Markdown转换RAGFlow等工具内部有更复杂的逻辑
    # 但PaddleOCR本身已经按阅读顺序排好了
    
    for region in page_result:
        region_type = region['type'] # header, footer, title, text, table, figure
        res_list = region['res'] # 具体的文字内容
        
        # 简单清洗逻辑
        text_block = ""
        if isinstance(res_list, list):
            for line in res_list:
                text_block += line['text'] + "\n"
        
        # 根据类型添加Markdown标记
        if region_type == 'title':
            full_markdown_content += f"## {text_block}\n"
        elif region_type == 'table':
            full_markdown_content += f"\n[这是一个表格 HTML/Markdown 数据,PaddleOCR会在result文件夹生成单独的excel,这里仅做占位]\n{region['res']['html']}\n"
        elif region_type == 'figure':
            full_markdown_content += f"\n> [图片内容: {text_block}]\n"
        else:
            full_markdown_content += f"{text_block}\n"
    
    full_markdown_content += "\n---\n" # 分页符

# 将最终结果写入 .md 文件
md_filename = os.path.join(output_folder, "knowledge_base.md")
with open(md_filename, "w", encoding="utf-8") as f:
    f.write(full_markdown_content)

print(f"搞定!Markdown 文件已生成:{md_filename}")

运行方式

  1. 把你要测试的 PDF (例如 book.pdf) 放到这个文件夹。

  2. 修改代码中的文件名。

  3. 运行:

    PowerShell

    python pdf_to_md.py
    

总结

你现在的环境非常清爽:

  1. Scoop 管理 uv

  2. uv 管理项目内的 Python 3.10 (不污染系统)。

  3. uv pip 安装了 PaddleOCR

如果在安装 paddlepaddle 或运行代码时遇到任何报错(特别是 Windows 缺少 dll 之类的),请把报错信息发给我,我帮你排查!


评论