Metadata-Version: 2.4
Name: pdf2html-engine
Version: 0.1.2
Summary: A PDF to HTML converter focused on layout preservation and table extraction.
Author-email: Peng Go <your-email@example.com>
Project-URL: Homepage, https://github.com/youruser/pdf2html-engine
Project-URL: Bug Tracker, https://github.com/youruser/pdf2html-engine/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: PyMuPDF>=1.23.0
Requires-Dist: pdfplumber>=0.10.0
Requires-Dist: Jinja2>=3.1.0

# PDF to HTML Engine (Internal)

一个高性能、高保真度的 PDF 转 HTML 引擎，专注于 **精准布局还原**、**复杂表格提取** 以及 **跨页表格无缝处理**。本项目专为内部系统设计，针对政务文件及复杂报表进行了深度优化。

> [!IMPORTANT]
> **私有项目声明**本项目属于非公开项目，不开放源代码下载，亦不提供任何外部访问权限。所有代码及相关文档受版权保护，未经授权禁止扩散。

## 🚀 核心功能

- **高保真布局还原**：基于原子级坐标分析，通过 `padding` 和动态字体计算，精确还原文本的视觉位置。
- **智能表格解析**：利用几何分析能力，完美支持复杂单元格合并（`rowspan`/`colspan`）及文本对齐。
- **跨页表格合并**：独有的跨页逻辑，可识别并自动合并跨页断裂的表格，支持自动剔除重复表头。
- **双阶段扫描 (Two-Pass)**：通过预扫描统一全局表格网格坐标，解决 PDF 转换中常见的列对齐微差问题。
- **智能下划线识别**：自动关联文本与其下方的图形线条，将填空下划线还原为语义化的 HTML 标签。
- **政务文档优化**：内置对常用中文字体、页眉页脚过滤及复杂表单样式的专项处理。

## 🛠️ 技术栈

- **核心语言**：Python 3.8+
- **PDF 驱动**：PyMuPDF (fitz) & pdfplumber
- **渲染引擎**：Jinja2
- **布局算法**：基于坐标的行归类与视觉网格对齐算法

## 📂 项目结构

```text
pdf2html-engine/
├── pdf2html_engine/     # 核心源码包
│   ├── __init__.py      # 暴露核心 API (PDFConverter, parse_pdf)
│   ├── cli.py           # 命令行接口实现
│   ├── converter.py     # 流程协调器：管理双阶段扫描与跨页逻辑
│   ├── pdf_loader.py    # 健壮加载器：修复损坏 PDF 结构
│   ├── layout_engine.py # 布局分析：处理文本行归类与样式推断
│   ├── table_extractor.py # 表格引擎：处理网格统一与合并单元格
│   └── html_renderer.py # 渲染层：基于 Jinja2 生成响应式 HTML
├── pyproject.toml       # 项目配置与依赖管理
└── requirements.txt     # 依赖列表
```

## 🧠 核心架构原理

1. **视觉行聚类 (Visual Line Grouping)**：按 Y 轴坐标对字符进行聚类，容忍微小垂直偏移，实现“所见即所得”的行合并。
2. **网格统一 (Grid Unification)**：在 Pass 1 阶段收集所有页面的表格坐标，Pass 2 强制使用统一网格，确保跨页表格视觉对齐。
3. **图形关联**：扫描 PDF 的 `drawings` 层，将线条与文本位置匹配，智能判定下划线语义。

## ⚠️ 版权与合规

本软件及其源代码属于受保护的资产。

- **不开放权限**：本仓库不接受外部开发者访问申请。
- **不公开代码**：严禁将本项目代码上传至任何公开代码托管平台。
- **仅供内部使用**：仅限在授权的内部服务器或环境中使用。
