# pp-doclayout-gpu-project **Repository Path**: aylerh/pp-doclayout-gpu-project ## Basic Information - **Project Name**: pp-doclayout-gpu-project - **Description**: 功能:(1)纯布局识别:gpu版的pp-doclayout-v3的布局版面识别-基于onnxruntime-gpu;(2)pdf2md(md的zip):基于pp-doclayout-v3和pdf-inspector(文本获取); - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-06 - **Last Updated**: 2026-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PP-DocLayout-v3 GPU 版文档布局识别与 PDF2MD 服务 本项目基于 PaddleOCR 开源生态的 PP-DocLayout-v3 及 `rapid_layout` 框架,构建高性能 GPU 加速与 ONNXRuntime 引擎驱动的文档版面分析与 PDF2MD 服务。支持常见图像及 PDF 复杂版面分析、15+ 种元素分类(标题、正文、表格、插图、公式、页眉页脚等)与自动画框可视化,并提供带布局识别、无 OCR 文本损耗的 PDF 转 Markdown (ZIP 打包) 转换功能。 ## 速度 - **pdf2md 转换速度**:复杂科研论文 PDF 处理速度达 **1.x 秒/页**。 ## 页面样式 ### 主页-pdf2md (Markdown 导出 / 无 OCR) ![2](./images/2.png) ### 版面识别与画框可视化 ![1](./images/1.png) ## 缺点: (1)无法解决字体字形映射缺失问题(该 PDF 文件嵌入的字体采用了私有/自定义字形映射(Identity-H Custom Encoding),且缺失了标准 ToUnicode CMap 映射流)。如文件GBT+151-2026-热交换器-339p(3-7)_目录.pdf;【应对方法:处理为图片】 ## 解决痛点与使用技术 ### 解决痛点 1. **复杂非结构化 PDF/文档版面难识别问题**:提供全自动化视觉版面元素定位与 15+ 细粒度分类,准确区分标题、正文、表格、图形与公式区域。 2. **多页 PDF 批量渲染与重构性能瓶颈**:结合 PyPDFium2 高速渲染库与 GPU ONNX 引擎,实现多页 PDF 快速逐页分析、版面画框标注与 PDF 文件合成重构。 3. **带布局 PDF 转 Markdown 字符错乱与 OCR 耗时痛点**: - 采用 **纯矢量字符定位与抽取**,完全无需 OCR,确保 100% 文本真实度与零识别错别字; - 结合 PP-DocLayout-v3 自动判定单栏与双/多栏排版(左栏 -> 右栏 -> 通栏),自动按自然阅读流重排; - 自动平滑合并跨行与跨栏连贯段落,清洗软连字符与行末连字符(如 `E-\nwaste` -> `E-waste`),过滤孤立页码; - 自动裁剪保存插图、表格与公式图片至 `images/` 目录并生成相对链接,一键打包 ZIP。 4. **部署环境复杂与依赖繁杂**:通过 Docker Compose 挂载隔离与清华加速源,将 CUDA / ONNX 依赖与运行环境完全解耦。 ### 使用技术 - **FastAPI**: 高性能异步 Web API 接口服务框架。 - **PP-DocLayout-v3 / RapidLayout**: PaddleOCR 最新开源的高精度文档版面分析神经网络模型。 - **ONNXRuntime GPU**: CUDA 硬件加速深度学习推理引擎。 - **pdf-inspector / pdfplumber**: PDF 文本提取与排版检测库。 - **PyPDFium2**: 高性能 PDF 矢量渲染与精准字符坐标定位工具库。 - **Docker Compose**: 容器化多阶段隔离、热重载挂载与一键部署。 ## API 接口说明 | 接口 Endpoint | 请求方式 | 说明 | | :--- | :--- | :--- | | `GET /api/health` | GET | 检查服务在线状态与 GPU 引擎初始化状态 | | `POST /api/detect/image` | POST (multipart/form-data) | 上传单张图片,执行版面检测,返回标注图片与 JSON | | `POST /api/detect/pdf` | POST (multipart/form-data) | 上传 PDF 文件,逐页识别版面,返回标注 PDF、逐页画框图及 ZIP | | `POST /api/convert/pdf2md` | POST (multipart/form-data) | 上传 PDF 文件,执行带布局无 OCR 转 Markdown,返回全量 MD、预览及 ZIP | | `GET /api/download/{job_id}/{filename:path}` | GET | 安全下载标注 PDF、图片、Markdown (.md)、JSON 数据及 ZIP 压缩包 | ## 构建与运行 ### 环境变量设置 (.env) ```env INNER_PORT=8563 OUTER_PORT=8563 DATA_DIR=H:/docker-data/pp-doclayout-gpu-project-data/data ``` ### 启动服务 ```powershell $OutputEncoding = [Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 docker compose up -d --build ``` 服务启动后,访问地址: `http://localhost:8563/` ## 致谢 - [rapid_layout](https://github.com/RapidAI/RapidLayout): 快捷高效的开源布局识别引擎。 - [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR): 优秀强大的飞桨多语言及版面 OCR 算法库。 - [pdf-inspector](https://pypi.org/project/pdf-inspector/): 高效的 PDF 特征检测与文本分析库。 - [PyPDFium2](https://github.com/pypdfium2-team/pypdfium2): 高性能 Python PDF 渲染与字符坐标提取库。