# PDF文本提取工具py39 安装:python安装好后,可以直接pip install --no-index --find-links=./packages -r requirements.txt 再进行 pip install --no-index --find-links=./packages -r requirements2.txt 安装后忽略报错。环境配置成功 ## 项目概述 这是一个基于Python的PDF文本提取工具,支持批量处理PDF文件,自动识别文档中的特定区域(如姓名、金额等),并进行OCR文字识别。该工具使用本地模型进行处理,无需联网,可方便地集成到桌面应用程序中,提供高效的文档处理能力。 ## 文件结构 ``` 项目根目录/ ├── pdf_to_table.py # 主程序 ├── requirements.txt # 依赖列表 ├── requirements2.txt # 依赖列表 ├── model/ # 模型文件夹(必须) │ ├── layout/ # 版面检测模型 │ └── best.pt # YOLO分类模型(固定名称) │ └── PP-OCRv4_mobile_det # OCR检测模型 │ └── PP-OCRv4_mobile_rec # OCR识别模型 ├── packages/ # 依赖包文件夹 ├── ocr.yaml # OCR配置文件(必须) ├── poppler/ # Poppler工具(可选,推荐) │ └── bin/ # Poppler可执行文件 └── output/ # 默认输出目录,初始没有,运行后会自动创建 ``` ## 安装说明 ### 1. Poppler安装 Poppler用于PDF到图像的转换,程序会自动检测多个位置的Poppler安装: **方法1:放置在程序目录(推荐)** 1. 下载Poppler for Windows: https://github.com/oschwartz10612/poppler-windows/releases/ 2. 解压到程序根目录下的`poppler`文件夹(或`poppler/bin`子目录) **方法2:系统安装** - Windows: 安装到任意位置,程序会自动检测常见路径(C:/poppler/bin、Program Files等) - Linux/Mac: 使用包管理器安装(apt-get、brew等) **方法3:环境变量** - 设置环境变量`POPPLER_PATH`指向Poppler的bin目录 程序会按以上优先级自动检测Poppler位置,无需手动配置。 ### 2. 模型准备 1. 确保版面检测模型位于`model/layout/`目录下 2. 确保YOLO分类模型文件命名为`best.pt`并位于`model/`目录下 3. 确保OCR配置文件`ocr.yaml`位于项目根目录下 ## 使用说明 ### 程序集成 ```python from pdf_to_table import process_pdf_to_table # 处理PDF文件夹 stats = process_pdf_to_table( pdf_folder="PDF文件夹路径", output_folder="输出文件夹路径", confidence_threshold=0.6 # 可选,默认0.6 ) # 处理结果统计 print(f"目标图片数: {stats['target_images']}") print(f"成功提取区域的图片数: {stats['successful_extractions']}") print(f"name区域数: {stats['total_name_regions']}, money区域数: {stats['total_money_regions']}") ``` ### 独立运行 也可以直接运行脚本,使用默认参数: ```bash python pdf_to_table.py ``` 默认会处理`input_pdfs`文件夹中的PDF文件,并将结果保存到`output`文件夹。 ### 错误处理与日志 ```python import logging # 配置日志 logging.basicConfig(filename='pdf_process.log', level=logging.INFO) try: stats = process_pdf_to_table(...) # 处理完成后的操作 except Exception as e: logging.error(f"处理失败: {str(e)}") # 错误处理 ``` ## 输出结构 处理完成后,输出文件夹结构如下: ``` 输出文件夹/ ├── images/ # 转换后的图片 ├── results/ # 处理结果 │ ├── classification_results.csv # 分类结果 │ ├── processing_results.csv # 处理结果 │ └── [图片序号]/ # 每个图片的处理结果 │ ├── [图片名]_all_regions.jpg # 区域可视化 │ ├── [图片名]_name_[序号].jpg # 姓名区域图片 │ ├── [图片名]_money_[序号].jpg # 金额区域图片 │ ├── [图片名]_name_[序号]_texts.txt # 姓名区域文本 │ ├── [图片名]_money_[序号]_texts.txt # 金额区域文本 │ └── [图片名]_regions.txt # 合并后的文本结果 └── rotated_images/ # 旋转后的图片 ``` ## 注意事项 1. 文件路径与结构 - 模型文件名称和位置固定(best.pt、layout目录) - Poppler会自动检测,无需手动指定路径 - 输入和输出路径可以使用相对或绝对路径 - 打包应用时需要包含所有模型文件和配置文件 2. 本地模型使用 - 程序使用本地模型,不需要网络连接 - 确保模型文件完整且未损坏 - 版面检测模型必须位于`model/layout/`目录 - OCR配置文件必须位于根目录 3. 性能考虑 - 处理大量PDF文件时可能需要较长时间 - 建议在单独线程中运行处理任务 - 显示进度条以提高用户体验 4. 集成建议 - 将模型文件和配置文件打包到应用程序中 - 处理前检查文件和模型是否存在 - 使用try/except捕获异常并记录日志 ## 常见问题 1. PDF转换失败 - 确认Poppler正确安装(程序会自动检测多个位置) - 检查PDF文件是否有效 - 查看日志了解详细错误信息 2. 模型加载失败 - 检查model目录下是否包含完整的模型文件 - 确认模型文件名称为best.pt - 确认ocr.yaml配置文件存在 3. 识别质量问题 - 调整confidence_threshold值(默认0.6) - 检查图片质量,必要时提高DPI - 检查区域裁剪参数 4. 旋转处理问题 - 确保YOLO模型支持的分类类别: no, yes, yes_90, yes_-90 - yes_90表示需逆时针旋转90度,yes_-90表示需顺时针旋转90度 --- 该工具支持四种分类:`no`(非目标文档), `yes`(正向文档), `yes_90`(需逆时针旋转90度), `yes_-90`(需顺时针旋转90度),并支持三种版面区域类型:`title`, `name`, `money`(仅提取name和money区域)。