关于 HTPD
HTPD 将 PDF 转为结构化的 `.htpd` 文档,让 AI 系统检索带页码的原文,而非猜测答案。它面向处理长篇手册和报告的用户,并保留章节、表格、图片及标注过的 OCR 扫描文本。
主要功能
- 01将 PDF 转为结构化章节
- 02保留页码、表格和图片
- 03通过 OCR 读取扫描页面
- 04搜索并提取原文
- 05无相关内容时明确告知
- 06本地阅读器与 MCP 工具
适用场景
- 01查找长篇技术手册中的规格
- 02依据 PDF 页码核对答案
- 03通过 OCR 文本查询扫描文档
- 04让 Agent 访问大型 PDF 文档集
MCP 相关
`htpd-mcp` 服务提供文档包列表、内容查看、章节打开、搜索、问答、图片提取和文件检查工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
7收录的工具列表 · 更新于 6 天前
此工具无需参数。
详细介绍
将长篇 PDF 转换为 AI 能正确读取的文档——文本准确,每个答案都标明页码。
简单来说 · 看看它如何工作 · 安装 · 与你的 AI 一起使用 · 面向开发者 · 质量
通俗来说
你有一份很长的 PDF——300 页的数据手册、5000 页的参考手册、一份政策文件或报告——以及一个关于它的问题。如果把整份 PDF 都交给 AI,它通常回答得很慢、会漏掉细节、混淆表格,也无法说明答案的出处。
**HTPD 为 AI 准备文档。**转换器会将 PDF 转换为一个 .htpd 文件:保留原文,一字不差,并按文档自身的章节和小节切分;标注每个段落所在的页码;将表格按行保存,并将插图保存为图片。随后,AI 只需读取回答问题所需的少数几个小节,就能根据原文作答,并提供页码,方便你核查。
| 你能获得什么 | 对你意味着什么 |
|---|---|
| 原文精确无误 | 数值、部件编号和寄存器名称与 PDF 完全一致。不做摘要,也不改写。 |
| 每条事实都标注页码 | 几秒钟内就能在原始文档中核查每个答案。 |
| 如实作答 | 如果文档中没有答案,HTPD 会如实说明,而不是猜测。 |
| 表格和插图 | 表格保留为行和列;示意图和照片会连同说明文字一起保存为图片。 |
| 扫描页也能处理 | 扫描件和图片中的文字会通过 OCR(免费的 Tesseract)识别,并做出标记,方便你知晓。 |
| 私密且免费 | 在你自己的电脑上运行。无需 GPU、账号或云服务。开源。 |
在浏览器中试用:HTPD Studio。
看看它如何工作
以下是针对一份公开的 109 页数据手册(NXP i.MX 93)的实际命令及其输出,较长内容已缩短。
1. 转换一次 PDF——100 页约需一秒:
2. 用自己的话提问——获取文档中的原文,并附上页码和章节:
3. 插图保留为图片——能识别图像的 AI 可以直接查看示意图:
日常使用时,你无需输入这些命令:把 .htpd 文件交给 AI 即可,也可以让插件、技能或 MCP 服务代为处理。
一分钟内完成安装
| 你使用的工具 | 操作方法 |
|---|---|
| Claude Code | 运行 /plugin marketplace add narendrachampaneri/htpd,然后运行 /plugin install htpd@htpd——即可转换 PDF 并根据 PDF 回答问题;其中已包含 MCP 服务 |
| Claude app 和其他支持技能的应用 | 在 Customize → Skills 中添加 htpd-skill.zip |
| 任何 MCP 客户端(Antigravity、Codex、Cursor 等) | 运行 pip install htpd-reader,然后运行命令 htpd-mcp --bundles <folder>;也可以在 MCP registry 中查找 io.github.narendrachampaneri/htpd |
| ChatGPT、Gemini | 上传 .htpd 文件,或使用现成的指令创建自定义 GPT / Gem |
转换器(PDF → .htpd) | 下载 htpd-0.1.2-linux-x64.tar.gz(适用于 Linux,以及通过 WSL 运行的 Windows),然后运行 ./htpd convert manual.pdf --single |
转换器和读取器都在你的电脑上运行。传给 AI 的只有你提供给它的文本。
与你的 AI 搭配使用
任何 AI 聊天工具——只需上传文件
htpd convert manual.pdf --single 会生成 一个 .htpd 文件。文件开头包含模型的阅读规则——只根据此文件作答,注明每条事实所在的页码,如果文件中没有相关答案,请明确说明——之后是目录和每个带页码的章节。
将它上传到 Claude、ChatGPT、Gemini 或其他助手,而不是上传 PDF。如果应用不接受该扩展名,请将文件重命名为
manual.htpd.txt——它是纯文本。有关始终包含你的文档的 ChatGPT 自定义 GPT 或 Gemini Gem,请参阅
docs/AI-APPS.md
(可直接粘贴的说明)。
最适合可在聊天中容纳的文档(例如几百页的数据手册)。对于非常大的手册,请使用下文的 skill、插件或 MCP。
Claude 应用和支持 skill 的应用——htpd skill
| 应用 | 添加方法 |
|---|---|
| Claude 应用 | 在 Customize → Skills 中上传 htpd-skill.zip,然后启用它(必须开启代码执行)。接着将 .htpd 文件上传到聊天中并提问。 |
| Claude Code | 安装插件(见下文),或解压到 ~/.claude/skills/。 |
其他可读取 SKILL.md 的 Agent | 解压到其 skills 文件夹中。 |
该 skill 运行一个小型脚本,只需要 Python——无需安装软件包,也无需模型。它会找到合适的章节,并返回带有 [page, section] 的原文行。由于 AI 只会读取脚本返回的内容,因此即使手册有数千页也能正常使用。
Claude Code——htpd 插件
/plugin marketplace add narendrachampaneri/htpd
/plugin install htpd@htpd
然后用普通语言提出请求——“将 datasheet.pdf 转换为 htpd”、“datasheet.htpd 中的 NPU 最高频率是多少?”——或运行 /htpd:convert datasheet.pdf --single。首次转换时会下载一次已发布的转换器(适用于 Linux 和 WSL,约 4 MB,并通过 SHA-256 校验)。PDF 不会离开你的电脑。
使用 MCP 的 Agent——htpd-mcp 服务
pip install htpd-reader # htpd-read and htpd-mcp, nothing else needed
claude mcp add htpd -- htpd-mcp --bundles ~/manuals # Claude Code
适用于 Antigravity、Codex、Cursor 或任何 MCP 客户端:命令为 htpd-mcp,参数为 --bundles /path/to/your/htpd/files。该服务也已列入官方 MCP 注册表,名称为 io.github.narendrachampaneri/htpd(客户端使用 uvx htpd-reader 启动)。工具:list_bundles、contents、open_section、search、ask、figure(以图片形式显示图表)和 check。
面向开发者
工作原理
flowchart LR
PDF["📄 PDF<br/>scanned or digital"] -->|htpd convert| H["HTPD<br/>sections · pages · tables · figures"]
H -->|upload| CHAT["AI chat<br/>(file + reading rules)"]
H -->|skill · plugin · MCP| AGENT["AI agent<br/>(Claude, Antigravity, Codex)"]
CHAT --> ANS["Answer from the exact text<br/>with page numbers"]
AGENT --> ANS
| 部分 | 功能 |
|---|---|
转换器 htpd(C++23,PDFium) | 读取每个字符及其位置和字体,移除页眉和页脚,查找标题(书签、印刷目录、编号、字体大小),将文本切分为章节,将表格保留为行、将代码保留为代码,将图表连同说明保存为 PNG,并通过 OCR 读取扫描件。 |
阅读器 htpd-read(Python,仅使用标准库) | 查找能够回答问题的章节(词语搜索、标题树、小型训练重排器),仅提取相关文本及页码,选出准确的答案行,并在文件无法回答时予以说明。也可作为 skill、插件和 MCP 服务使用。 |
下载(无需构建),请前往发布页面:
tar xzf htpd-0.1.2-linux-x64.tar.gz
cd htpd-0.1.2-linux-x64
./htpd convert manual.pdf --single # writes manual.htpd
sudo apt install tesseract-ocr # optional: read scanned pages too
从源代码构建——Linux(Ubuntu 24.04,也支持 WSL)、g++ 13+、make 或 CMake、Python 3.10+:
git clone https://github.com/narendrachampaneri/htpd.git && cd htpd
./scripts/get_pdfium.sh # the PDF engine, once (about 4 MB)
make # builds build/htpd
make test # the C++ tests
转换并提问:
./build/htpd convert manual.pdf --single # one file: manual.htpd (for AI chats)
./build/htpd convert manual.pdf # a folder: manual.htpd/ (for tools and agents)
pip install htpd-reader # or: python3 -m pip install -e .
htpd-read ask examples/single-file/sample.htpd "What is the maximum bus voltage?"
[page 2, 2.1.1 Limits]
Parameter | Min | Typ | Max | Unit
Bus voltage | 200 | 400 | 480 | V
每行答案都从文件中逐字复制;--context 会为 AI 添加完整章节。更多命令:contents、section、
search、figure、check——详见
reader/README.md。
格式
HTPD 文档是纯 UTF-8 文本:采用 Markdown 格式,并包含少量字段。任何模型、
编辑器或 grep 都能读取。
HTPD 文件中的一个章节(已缩短)
## [S14] 4.1.5 Maximum frequency of main modules
Path: 4 Electrical characteristics > 4.1 Chip-level conditions > 4.1.5 Maximum frequency of main modules - page 18
```text
Cortex®-A55 cores | 0.9 GHz | 1.4 GHz | 1.7 GHz
DRAM | 933 MHz | 1400 MHz | 1866 MHz
NPU | 500 MHz | 800 MHz | 1000 MHz
```
- 章节遵循文档自身的标题并构成树形结构:父级、子级、上一章、下一章。
- 页码标记 `` 位于每一页文本的上方。
- 表格以
|分隔各单元格;代码和清单保留其间距。 - 图示为 PNG 图片,附带标题和页码,并存储在文件内。
- **两种形式,内容相同:**单个
.htpd文件(用于聊天)和每个章节一个文件的文件夹(用于工具);后者也是有效的 Open Knowledge Format 数据包。
完整规范见 docs/FORMAT.md。
示例:examples/single-file/sample.htpd 和
examples/sample.htpd/。
质量
速度和体积——单个文件,启用图示和 OCR,在 2 核云机器上:
| 文档 | 页数 | 章节 | 图示 | PDF → .htpd | 耗时 |
|---|---|---|---|---|---|
| NXP i.MX 93 汽车数据手册 | 109 | 114 | 53 | 1.7 MB → 2.5 MB | 1.2 s |
| NXP i.MX 93 参考手册 | 5 652 | 5 929 | 637 | 56.3 MB → 39.8 MB | 67 s |
| RISC-V 调试规范 | 119 | 164 | 3 | 2.4 MB → 0.7 MB | 3.4 s |
| Arm AAPCS64 | 65 | 125 | 5 | 0.4 MB → 0.3 MB | 0.3 s |
| RISC-V 非特权 ISA | 670 | 760 | 25 | 4.5 MB → 2.8 MB | 4.9 s |
包含图示的文件中,大部分内容是位于文件末尾的图片;文本在前。--figures off 会将图片排除。
查找答案——针对两本公开手册的 133 个测试问题(eval/report.md,由评估工具编写):
| 首先找到正确章节 | 前 5 个结果中包含正确章节 | 找到正确页码 | 提供给 AI 的文本中包含答案 | |
|---|---|---|---|---|
| HTPD reader | 0.78 | 0.95 | 0.64 | 0.86 |
| 在 HTPD 章节中进行普通词语搜索 | 0.64 | 0.87 | 0.55 | 0.83 |
| 在 500-token 分块中进行普通词语搜索 | 0.32 | 0.72 | 0.51 | 0.83 |
交给 AI 的文本约占整个文档的 6%;对于手册中没有答案的 95% 问题,reader 都能正确指出“此文件中没有”。
适用于多种 PDF——45 份包含已知文本的 PDF,由 Word、LaTeX、Chrome、wkhtmltopdf 和幻灯片软件生成,也包括扫描件和将字母绘制为形状的文件
(tests/zoo):
99% 的文本顺序正确,96% 的标题正确,89% 的表格行完全准确。
健壮性——对 34 份难处理的 PDF 进行压力测试(双栏、横向表格、旋转页面、1500 页、加密、截断和损坏文件):没有崩溃或卡住,所有文件均有效,没有丢失任何单词。每次变更都会运行 102 个 C++ 测试和 155 个 Python 测试。
项目结构
文件夹与文档
include/ src/ cli/ the converter (C++23, PDFium is used in one file only)
reader/htpd_reader/ the reader: bundle, check, search, retriever, re-ranker, packer, answer, MCP server
skills/htpd/ the skill for AI apps (scripts/build_skill.py packs it)
skills/convert/ the plugin's skill that converts PDFs
.claude-plugin/ the Claude Code plugin and its marketplace (this repository is both)
eval/ evaluation harness, baselines, report
model/ the training of the re-ranker
tests/ C++ tests, test PDFs, the stress test, the document zoo
docs/ FORMAT.md · CONVERTER.md · READER.md · AI-APPS.md · BACKGROUND.md
examples/ a converted document in both forms
| 文档 | 用途 |
|---|---|
docs/FORMAT.md | 格式说明:任何人都可以据此编写阅读器 |
docs/CONVERTER.md | 构建、选项、转换器的工作原理、测试内容和限制 |
reader/README.md | 阅读器、它的命令及其 Python API |
docs/READER.md | 阅读器如何找到答案,以及如何衡量效果 |
docs/AI-APPS.md | ChatGPT 自定义 GPT 和 Gemini Gem |
docs/BACKGROUND.md | HTPD 采用这种构建方式的原因 |
AGENTS.md | 贡献者和编码 Agent 的规则 |
参与贡献
欢迎提交问题和拉取请求。修改任何内容之前,请先阅读
AGENTS.md;简要规则如下:
- 合并变更前,所有测试都必须通过:
make test和python3 -m pytest。 - 代码中的每条新规则都必须配有测试,且没有该规则时测试应失败。
- 绝不丢失文本,也绝不编造文本。
- 对写入 HTPD 文件的内容所做的变更,必须在同一提交中更新
docs/FORMAT.md。
许可证
HTPD 采用 Apache License 2.0 开源:只要保留版权和许可证声明(NOTICE),并标明你做出的修改,即可使用、修改和分享,也可用于商业产品。
许可证还包含每位贡献者授予的专利许可。
转换器使用的 PDFium 不属于此仓库,并采用其自己的许可证(BSD 风格,含有 Apache-2.0 部分);运行
scripts/get_pdfium.sh 后,其许可证文本位于
third_party/pdfium/licenses/。如果你将程序与 libpdfium.so 一起提供给他人,也必须将这些文件一并提供。
由 Narendra Champaneri 制作 · HTPD Studio · 发布版本 · PyPI
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。