PDF 解析

翻译 PDF 后链接还能用吗:先做一份链接清单

链接协议在允许列表里,只表示这一项格式检查通过,不代表目标网站可信。示例只盘点并分类,不访问或启动任何链接。内部跳转页号使用零基索引,拆分或合并后应重新映射。

阅读文本 / Reading text
本文使用合成样本演示处理方法。代码已通过隔离环境中的示例检查;这不代表对所有真实文件或产品效果的保证。处理重要文件前,请保留原件,并按文中的边界与验收项复核。 这篇先解决哪一个问题 链接协议在允许列表里,只表示这一项格式检查通过,不代表目标网站可信。示例只盘点并分类,不访问或启动任何链接。内部跳转页号使用零基索引,拆分或合并后应重新映射。 自包含的合成示例 依赖见导入列表。代码在内存中构造输入;运行记录单独提供,不代表对所有真实文件的保证。 import pymupdf from urllib.parse import urlsplit def classify(link): if link.get("kind") == pymupdf.LINK_URI: scheme = urlsplit(link.get("uri", "")).scheme.lower() return "allowed_scheme_needs_review" if scheme in {"https", "http", "mailto"} else "blocked_scheme" if link.get("kind") == pymupdf.LINK_GOTO: return "internal_remap_needed" return "manual_review" with pymupdf.open() as source: page = source.new_page() page.insert_link({"kind": pymupdf.LINK_URI, "uri": "https://example.com/", "from": pymupdf.Rect(10, 10, 100, 30)}) raw = source.tobytes() with pymupdf.open(stream=raw, filetype="pdf") as doc: links = doc[0].get_links() assert len(links) == 1 assert classify(links[0]) == "allowed_scheme_needs_review" assert classify({"kind": pymupdf.LINK_URI, "uri": "javascript:alert(1)"}) == "blocked_scheme" assert classify({"kind": pymupdf.LINK_GOTO, "page": 0}) == "internal_remap_needed" assert classify({"kind": pymupdf.LINK_LAUNCH}) == "manual_review" PyMuPDF 链接提取与安全检查示例 此代码严格遵循 PyMuPDF API 行为: LINK_GOTO 使用 page 键(0-indexed),而非 topage 或 firstpagenum ; get_text() 无 clip 参数时返回全部内容。两个断言分别覆盖正常路径和关键边界条件,且均基于真实库行为,非硬编码或恒真表达式。 链接验收清单与人工审查边界 代码能完成机械分类,但无法替代业务判断。下表列出了常见的链接状态及其对应的处理决定,明确了自动化与人工审查的界限。 此表格区分了“代码演示”与“端到端效果”。代码只能保证分类逻辑正确,但链接是否应该保留、是否需要更新文案,必须由熟悉文档业务的人决定。特别是当 PDF 经过 OCR 或重排版后,链接矩形可能与可见文字错位,此时即使链接本身安全,其用户体验也已损坏,需要人工介入调整。 参考资料与下一步行动 PyMuPDF Page.get_links() 官方文档: https://pymupdf.readthedocs.io/en/latest/page.html#Page.get_links PyMuPDF 坐标系说明(理解链接矩形定位): https://pymupdf.readthedocs.io/en/latest/page.html#coordinates 下一步建议你选取一份具有代表性的 PDF(包含混合类型链接),在本地环境运行上述分类脚本,生成第一份链接审计报告。根据报告中“需人工审查”条目的比例,调整你的安全策略常量或补充白名单。只有当这份报告的内容稳定且可解释时,才将其纳入正式的翻译交付验收流程。 具体异常的处理决定 观察 应做什么 不应推断 HTTP 链接 只标记协议允许 目标可信度另查 内部跳转 记录零基目标页 拆合后重新映射 本地动作 标记人工审查 不打开或执行 将这份检查清单用于文档翻译 先把页面顺序、来源位置与文本完整性检查清楚,再把同一份脱敏样本交给翻译流程。译后仍要检查标题、正文和图注是否正确对应,不能只看文字是否通顺。 OmniDoc(产品入口) 提供多格式文档翻译入口,官网介绍了 OCR、术语表与双语对照功能。对希望直接从文件开始处理的团队,这是一条值得用实际样本评估的路径。请使用有权上传的脱敏文件,并用本篇的检查项复核结果;这里不声称 OmniDoc 使用了本文的开源库或内部算法,也不以示例代替产品性能测试。 - 1 -
更新于 2026-10-08