Mac · 全程在你自己的电脑上 · PDFium + lopdf · 输出带标签 PDF · 带命令行
TagForge:为整个文件夹的 PDF 批量加标签
把一个文件夹的 PDF 交给 TagForge,它会像人一样读每一页:哪几行是标题、段落在哪里结束、哪一块是图片、文字应该按什么顺序读。然后写出带标签的 PDF,并附一份报告,说明自动修好了什么、还有哪些需要人工判断。全部在这台 Mac 上完成:不上传,不需要下载模型,也不按页收费。
US$6.99 一次买断 · 含免费版
版本 1.0.0 · macOS 14 Sonoma 或更新,Apple Silicon · 下载 28 MB · 版面引擎已内置,无需另外下载
一次买断 · 包含 1.x 全部更新 · 14 天全额退款

你的授权码
打开 TagForge → 设置 → 授权,把整行粘进去。请另存一份:授权码离线可用,你自己的所有 Mac 都能用,覆盖 1.x 的所有版本。
工作方式
- 加入文件夹。 里面的 PDF 会依次排进队列。可以拖入文件、选择文件,或者直接选文件夹;Finder 的「打开方式」和
⌘O走的都是同一个入口。免费版一次处理一个文件。 - 读取版面。 PDFium 给出每一个字符的字体、字号、粗细和包围盒;TagForge 按基线聚成行,按行距和缩进聚成块,再按页面中间的空隙分出栏。标题由正文的中位字号、加粗和编号来判断;页眉页脚由位置和跨页重复识别。每页大约一秒,就在这台 Mac 上。
- 复核需要人工的部分。 结构树是一行行的块:改标题级别、把某块标成装饰内容、在阅读顺序里上下移动、给图片写替代文本或清空。替代文本草稿会一直标着「草稿」,直到你确认。
- 导出、归档。 带标签的 PDF 写在源文件旁边,同时生成一份 JSON 报告(需要的话还有 HTML 版),逐条列出检查项、涉及的页码,以及留给人工的项目。

PDF 里多了什么
TagForge 会重写页面内容,并加上读屏软件要找的那套结构:
- 标记内容。 每个文本对象外面包一层
BDC标记内容序列并带 MCID,页面上的每段文字都指向一个结构元素;图片包成/Figure,页眉页脚包成/Artifact。 - 结构树。
/StructTreeRoot下有/P、/H1–/H6、/Figure和装饰内容条目,另有/ParentTree,以及每页的/StructParents。 - 文档级设置。
/MarkInfo /Marked true、/Tabs /S让 Tab 键按结构顺序走、/Lang标出文字语言、/ViewerPreferences /DisplayDocTitle true让窗口标题显示文档标题。 - 标题与语言。 文档标题取自元数据、最大的标题或文件名;语言取自
--lang或文字本身,导出前都可以改。
写报告之前,TagForge 会重新打开自己的输出:页数必须一致,归一化后的文字哈希必须一致,FPDFCatalog_IsTagged() 必须为真,结构树里的子元素数量必须对得上。任何一项不通过,它宁可报错,也不会把文件交给你。
一份可以放进卷宗的报告
每份文档旁边都有一份 JSON 报告,逐项检查、逐条带页码。HTML 版内容相同,只是排给人看:哪些已经自动修好、哪些需要人工、哪些被有意留空。免费版的报告带「Free version」水印,并注明只检查了前 10 页。
TagForge 不宣称结果「通过了 PDF/UA」。它只做版面能证明的四件事——标记内容、结构树、页眉页脚的装饰标记、阅读顺序——其余逐条列出,让签署无障碍声明的人清楚还差什么。
留给人工的部分
有些事只靠页面推断,诚实地说做不到。这些会进人工复核清单,而不是猜一个答案:
- 表格。 行、列和表头单元格留给人工或别的工具。
- 表单域。 字段标签和 Tab 顺序不会被重写。
- 扫描页。 没有文字层的页面仍然没有:1.0 不做 OCR。
- 复杂分栏。 检测到栏之后,给出的阅读顺序只是起点,报告会提醒复核。
- 替代文本。 草稿取自图片下方的图注或最近的句子,一律标为草稿,确认之前请自己读一遍。
- 旋转页。 旋转的页面不会被打上标签,而是列进报告,避免在错误的方向上打标签。
免费版与授权
下载的就是完整应用。没有授权时,一次打开一个文件,检查前 10 页,报告带水印——足够用你自己的文档看清它到底会做什么。
| 免费版 | 授权版 | |
|---|---|---|
| 同时处理的文件 | 一个 | 整个文件夹 |
| 每个文件检查的页数 | 前 10 页 | 全部页面 |
| 结构树与复核 | ✓ | ✓ |
| 报告(JSON 与 HTML) | 带水印 | ✓ |
| 导出带标签 PDF | — | ✓ |
命令行(fix) | — | ✓ |
| 更新 | ✓ | 1.x 全部更新 |
| 价格 | 免费 | US$6.99,一次 |
文档留在你的 Mac 上
不上传、不注册、不数额度。TagForge 不会把 PDF、文件名或抽出的一个字发到任何地方。它只做两类网络请求:每天一次更新检查,从 swordfishsoft.org 取新版本列表和已退款订单列表——所有人取的是同一份文件,除此之外没有别的。更新检查可以在设置里关掉。读取、加标签和导出完全不需要联网。详见隐私政策。
命令行与 AI 助手
TagForge 附带 tagforge,与应用共用同一个引擎。可以在终端里扫描整个文件夹,把修好的文件写到另一个目录,也可以交给能在你 Mac 上执行命令的 AI 助手,比如 Claude Code 或 Codex。
tagforge scan *.pdf # 只看它读到了什么,不写文件
tagforge scan report.pdf --json # JSON Lines,每个文件一行
tagforge fix *.pdf --out-dir remediated --html # 带标签 PDF + JSON + HTML 报告
tagforge fix annual-report.pdf --out tagged.pdf --overwrite
tagforge report *.pdf --out-dir findings --html # 只出报告,不加标签
tagforge license SFS1-… # 为这台 Mac 保存授权码
tagforge license --status
- 为脚本而做。 它从不等待输入,进度写到 stderr;加
--json时输出 JSON Lines。退出码:0 成功,1 成功但有需要人工的项目,2 无法运行,3 需要授权,4 输出校验失败——脚本因此分得清「干净」和「先归档再说」。 - 重复运行是安全的。 结果是新文件,输入 PDF 只读、绝不修改。不给
--out-dir或--out时,文件写在源文件旁边,名为<name>.tagged.pdf和<name>.tagforge.json;已有输出默认跳过,加--overwrite才覆盖。 - 应用和命令行一致。 同样的版面分析、同样的标题、同样的报告——应用里修的文件夹和终端里修的文件夹,产出的结构相同。
给 AI 助手的提示词
我的 Mac 上装了 TagForge。它给 PDF 加带标签结构,完全离线,用的是 PDFium 和 lopdf,并且带一个命令行工具: "/Applications/TagForge.app/Contents/Helpers/tagforge" (如果把命令装进了 PATH,也可以直接写 tagforge)。先用 --help 看用法。参数: tagforge scan FILE... [--json] [--pages N] [--lang zh-CN|en-US] tagforge fix FILE... [--out-dir DIR] [--out FILE] [--html] [--lang ...] [--overwrite] tagforge report FILE... [--out-dir DIR] [--html] tagforge license [KEY] | --status | --remove 加 --json 时所有命令输出 JSON Lines。不给 --out-dir 或 --out 时,fix 在输入旁边写.tagged.pdf 和 .tagforge.json;report 写 .tagforge.json。输入 PDF 永远不被修改;已有输出默认跳过,除非给 --overwrite。 退出码:0 成功,1 成功但有需要人工的项目,2 无法运行,3 需要授权,4 输出校验失败,5 已取消。进度写到 stderr,全程不等待输入。 结构是从页面几何推断的:表格、表单、扫描页、复杂分栏和每一段替代文本草稿,仍然需要我自己复核。如果说需要授权,请直接告诉我,不要绕过。不要删除或移动我的文件。 我的任务:
scan、report 和 license 不需要授权即可使用;fix 需要授权。免费版应用里的报告只覆盖前 10 页。
购买流程
- 先下载、先用免费版。 打开磁盘映像,把 TagForge 拖进「应用程序」,拿自己的一份 PDF 跑一遍:结构树、复核界面和不带水印的报告都在。
- 在本页购买授权。 结账由我们的转售商 Paddle 完成,可以刷卡、用 PayPal 或结账页上的其他方式,适用地区会加税。
- 复制授权码。 付款成功后会立即显示在本页,同时也会发到你的邮箱。把它粘进 TagForge → 设置 → 授权,限制就没了。
授权码丢了?用付款时的邮箱发信到 [email protected],我们会重发。
常见问题
用它能通过 PDF/UA 吗?
TagForge 不作这个承诺,也没有工具能只看页面就保证合规。它加上并校验机械性的部分——标记内容、结构树、页眉页脚的装饰标记、Tab 顺序、语言、文档标题——其余逐条写进报告并标明页码,由人来收尾,也由人来说明做过什么。
导出的 PDF 到底哪里不一样?
页面内容被重写:每个文本对象放进带 MCID 的标记内容序列,图片成为 Figure,跨页的页眉页脚标成装饰内容;同时加上结构树、ParentTree 和每页的 StructParents,以及 /Tabs /S、/MarkInfo、/Lang 和 /ViewerPreferences。看得见的页面不变:写完之后,TagForge 会重新打开输出,确认页数和归一化后的文字完全一致。
PDF 本来就已经带标签怎么办?
报告里会写出来,并且不会重新打标签:在已有结构树上再叠一层,比没有更糟。需要修复的话请用别的工具处理。
它认错了,我能改吗?
可以,在导出之前。点页面上的块或结构树里的一行,在标题各级、段落、图片和装饰内容之间切换,在阅读顺序里上下移动,编辑或清空替代文本。结构顺眼了再导出。
替代文本是什么样的?
是草稿,而不是把猜测当成描述。图片下方有图注就用图注,否则用同一块里最近的句子,结果标着「草稿」;报告会逐张列出图片和页码。2–3B 的视觉模型留给后续版本,不是这一版。
能读扫描件吗?
不能。没有文字层的页面没有东西可标,会进人工复核清单。OCR 不是 1.0 的功能。
表格和表单呢?
都留给人工。TagForge 会标记内容、给出阅读顺序,但表头单元格和表单域的标签需要人来判断,报告里按页写明。
免费版的限制怎么算?
一次一个文件、每个文件前 10 页、报告带水印、不能导出带标签 PDF。没有按月重置:限制属于版本,不是一个试用计时器。授权后这四条限制在这台 Mac 上全部解除。
一个文件夹要跑多久?
M 系列 Mac 上每页约一秒,96 页的报告远不到两分钟。加标签时会写出检查过的页面,并在报告成功之前校验结果。
支持哪些 Mac?
Apple Silicon(M1 及以后)、macOS 14 Sonoma 或更新。不支持 Intel Mac。
有 Windows 版吗?
暂时没有。问的人够多我们就做,同一份授权同样通用。可以发信到 [email protected]。
macOS 问我要不要打开,这正常吗?
正常。第一次打开任何从网站下载的应用,macOS 都会问一次。确认提示里写着 Apple 已检查且未发现恶意软件,然后点「打开」:应用有我们的 Apple Developer ID 签名,并经过 Apple 公证。
用着不合适怎么办?
每次购买都有14 天全额退款。
由重庆剑鱼科技有限公司(SwordFishSoft)销售。订单流程由我们的在线转售商 Paddle.com 完成,Paddle.com 是所有订单的 Merchant of Record。使用条款 · 退款政策 · 隐私政策。引擎:PDFium(BSD-3-Clause)负责读取与渲染,lopdf(MIT)负责写结构树;Sparkle(MIT)。截图中的文档是一份公开发表的临床指南,不是客户文件。