阅读文本 / 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