doc-translator · 文献/专利全文翻译(8 语种,保格式)
读取各种格式的文献原文与专利原文,进行全文翻译,并保留源文件的格式结构
(标题层级、段落、表格、图片、分页)。支持 8 种语言任意互译:
| 代码 | 语言 | 代码 | 语言 |
|---|---|---|---|
zh |
简体中文 | zh-TW |
繁体中文 |
en |
英文 | ja |
日语 |
de |
德语 | fr |
法语 |
ru |
俄语 | ko |
韩语 |
> 扩展离线语言:除上表 8 种语言外,离线 tesseract.js OCR + 子代理内联译中管线
> 已验证支持 葡萄牙语(PT)、繁体中文/台湾专利(zh-TW / TWI)、日语(JA)、
> 韩语(KO)、俄语(RU) 等专利/文献翻译(见下文各语言小节)。
> 其他罗曼语族语言(如意大利语、西班牙语)同样可经该离线管线处理。
语言参数接受多种写法(如 中文/chinese/zh-cn → zh,繁体 → zh-TW,
英文/english → en,日语/japanese/ja → ja 等),详见
references/languages.md。
何时使用
- 用户给出一篇论文 / 专利 / 报告 / 说明书,要求「全文翻译」「译成中文 / 英文 / 日文…」。
- 要求翻译后保留原格式(标题、表格、图片、页码结构),而不是只给纯文本。
- 需要在 8 语种之间互译,包括简↔繁、日⇄中、德/法/俄/韩 等任意方向。
支持的输入 / 输出格式
| 输入 | 输出(--output 扩展名决定) | 格式保真度 |
|---|---|---|
.docx |
.docx(默认) |
完整:行内格式、样式、表格、图片全部保留 |
.docx |
.pdf / .txt / .html |
结构保真(标题/段落/表格/图片) |
.pdf |
.pdf(默认) |
结构保真:标题层级、段落、分页、图片保留(非像素级排版) |
.pdf |
.docx / .txt / .html |
结构保真,可编辑 |
.txt / .md |
.txt(默认) / .pdf / .docx / .html |
段落/结构保真 |
> PDF 的「保格式」指语义结构保真(标题层级、段落顺序、分页、图表位置、表格),
> 不是逐像素还原原排版——PDF 原生几乎无法无损反编译。需要像素级保真时,优先用
> DOCX 原稿或把 PDF 先导出为 DOCX 再翻译。
翻译后端
> 🚫 Google 翻译后端已永久停用(2026-09-20 起,勿再尝试):本机沙箱内 Google 翻译
> 接口实测不可用(translate.google.cn 首页 200 但 /translate_a/single gtx 接口被
> 代理拦截 502,.com 超时)。任何情况下都不要请求 Google 翻译接口,也不要做连通性
> 探测——直接按下述优先级选择后端。
llm(唯一脚本后端):调用 OpenAI 兼容的 Chat Completions API,质量最高,
推荐用于专利与学术文献(术语、专名更准)。仅需配置 base-url / key / model(可用环境变量
DOC_TRANS_LLM_BASE/DOC_TRANS_LLM_KEY/DOC_TRANS_LLM_MODEL)。
国内可填 DeepSeek / 智谱 / 火山 等兼容端点。
⚠️ 沙箱若未配置 key / base-url,不要试任何在线接口,直接走离线 AI 内联翻译管线
(见下文「离线 / 沙箱环境的可用替代方案」)。- 离线 AI 内联翻译(无 key 时的默认路径):AI 在对话内按学术翻译规范逐段译出,
配合 tesseract.js OCR / PyMuPDF 文本提取 + reportlab / python-docx 渲染,全流程本地完成。
离线 / 沙箱三件套检查清单
执行翻译前,尤其在受限网络 / 无 API key 环境下,先确认:
| 检查项 | 正常标志 | 异常处理 |
|---|---|---|
| venv 依赖 | python-docx / PyMuPDF / reportlab / Pillow / pytesseract 可 import |
删除 <skill>/scripts/.venv 后用 requirements.txt 重建,或设 DOC_TRANS_VENV 指向已配好依赖的 venv |
| Node + tesseract.js | 能执行 node -e "require('tesseract.js')" |
检查 C:/Users/Lenovo/.workbuddy/binaries/node/workspace/node_modules/tesseract.js 是否存在 |
本地字库 .traineddata.gz |
文件存在且大小合理(eng ~3 MB,chi_tra ~27 MB) | 优先复用本机历史会话缓存;否则从 https://tessdata.projectnaptha.com/4.0.0/<lang>.traineddata.gz 下载 |
扫描件 / 图片型 PDF(OCR)
若 PDF 没有文本层(扫描件、图片型专利),脚本会自动检测到并启用 OCR:
将每页光栅化后用 Tesseract 识别文字,再走正常的「翻译 → 渲染」流程。
页面同时会以缩略图形式嵌入译文,保证附图 / 表格 / 图表在 HTML/PDF 中可见。
前置条件(用户本机需准备)
- 安装 Tesseract 二进制并加入
PATH:
- Windows:https://github.com/UB-Mannheim/tesseract/wiki (安装时勾选需要的语言包)
- macOS:brew install tesseract tesseract-lang
- Linux:sudo apt install tesseract-ocr tesseract-ocr-<lang> - 安装与源语言对应的
tessdata语言包,代码对照见references/languages.md
(如源为英文eng、简中chi_sim、繁中chi_tra、日jpn、德deu、法fra、
俄rus、韩kor)。可用tesseract --list-langs确认已就位。 - OCR 依赖
pytesseract/Pillow,已随requirements.txt自动安装。
用法
--ocr 取值:auto(默认,自动判断扫描件并 OCR)/ tesseract(强制 OCR)/
off(关闭,按纯文本提取)。--ocr-dpi 控制识别分辨率(默认 300)。
# 扫描件专利:自动检测 + OCR + 简体中文译文(HTML)
python "<skill>/scripts/translate_doc.py" \
-i "WO2004051251A1.pdf" -f en -t zh \
-o "WO2004051251A1.zh.html" --ocr auto
> 提示:Tesseract 对专利密集排版识别率有限,OCR 草稿建议再用 --backend llm
> 重跑关键权利要求以保证术语准确。CJK 源语言会自动追加 eng
> 语言包(chi_sim+eng 等),以便同时识别正文中的拉丁专名。
离线 / 沙箱环境的可用替代方案(已验证 100% 本地)
当运行环境既没有系统级 Tesseract 二进制、也无法直连任何翻译 API
(如 translate.google.cn / googleapis.com 均超时或返回 404)时,本 skill 已验证
一套完全离线的可行管线,遇到同类受限环境可直接复用:
- 本地 OCR(无需系统 Tesseract):借助
ocr-localskill 的tesseract.js
(Node.js,纯本地,无 API Key)。先把 PDF 每页光栅化为 PNG(PyMuPDF,dpi≈250),
再逐页Tesseract.recognize(img, 'eng')输出page_NNN.txt。
- 优先复用本机缓存:在运行前用find D:/Workbuddy C:/Users/Lenovo -name '*.traineddata*'
搜索历史会话遗留的字库(常见位置如D:/Workbuddy/2026-08-26-19-01-20/patent_work/tw_patent/)。
- tesseract.js v7 本地字库格式:使用createWorker(lang, { langPath: '<dir>' })时,
目录下必须是压缩格式<lang>.traineddata.gz(不是解压后的.traineddata)。
若缓存只有.traineddata,用gzip -c -k chi_tra.traineddata > chi_tra.traineddata.gz重新压缩即可。
-eng.traineddata.gz镜像:本环境实测https://tessdata.projectnaptha.com/4.0.0/eng.traineddata.gz
可直连(HTTP 200),而 GitHub / JSdelivr 镜像返回 404——优先用前者。 - 内联翻译(不调外部 API):当翻译端点全被墙时,由 AI 直接在对话内按
学术翻译规范(直译 → 反思 → 雅化)逐段译出,而非调用任何外部接口。
可保留出处、公式、专名与双语对照,适合专利/学术文献等高保真场景。 - 长文档分批持久化:59 页这类大文档,用
master.jsonl
(每行一条{"page","en","zh","kind"})+ 按 page 去重追加的append_batch.py
累积进度,最后build_html.py一次性生成自包含双语 HTML(附图以 base64 内嵌、
双栏原文 | 译文、可切换「双语 / 仅中文」、可打印导出 PDF)。
> 该管线的脚本与中间产物放在工作目录(如 patent_work/),可增量续跑、断点不丢;
> HTML 把附图页直接内嵌为 <img>,确保专利图纸可见。
> 专利后附的「国际检索报告 / 同族附件」等事务性页,文献号与日期照原文保留,
> 仅对说明性文字做中文化即可。
>
> 输出 PDF 时(reportlab):注册内置中文字体
> pdfmetrics.registerFont(UnicodeCIDFont('STSong-Light')) 即可渲染简体中文,
> 无需外部字体文件;每页可「原版影像(PIL 转 JPEG 压缩后 RLImage 内嵌)+ 译文段落」。
> ⚠️ 不要 from reportlab.lib.units import pt——reportlab 没有 pt 单位
> (点即基准单位),会 ImportError,去掉该导入即可。
> 多语言场景同理:日文 HeiseiMin-W3、韩文 HYSMyeongJo-Medium、繁体中文
> MSung-Light(简体中文 STSong-Light)。
>
> 表格与公式在 PDF 中的保真渲染:
> - 不要依赖 ASCII 字符拼表格或拼分数式(如用 │ ─ 画框、用横线当分数线),
> 这在 PDF 中错位且不专业。应直接用 reportlab.platypus.Table 渲染:
> - 数据表格:表头浅灰底 + 全框线,单元格内放 Paragraph。
> - 分数公式:用一个 3 行 1 列的小 Table,依次为分子、HRFlowable 水平线、分母;
> 再与右侧算式拼成一行,即可得到规范的 E_Probe / E_Standard · 100 = ... 版式。
> 示例结构:Table([[Paragraph(分子)], [HRFlowable(线)], [Paragraph(分母)]])。
> 原文表格的保真提取与翻译(防拍平,已验证 EP805976B1 表 I/II):
> - 问题:PyMuPDF 按 block 提取时,网格表格常被拆成多个文本块
> (表题一块、每行一块、单元格用 \n 逐个堆叠),译文若照此渲染,
> 表格会变成一列竖排文字,结构全失。
> - 提取阶段规则:发现文本块满足以下任一特征时,判定为「被拍平的表格」,
> 必须重组为结构化表格块 {"type":"table","table":[[...]]}(二维数组,行×列):
> 1. 相邻多个短块呈现相同的行数/重复模式(如 块A=表头标签序列、块B=数值序列);
> 2. 单块内 \n 分隔的短行呈列头+数据列的等长分组(如 SENSOR\nTYPE A\nTYPE B...
> + SLOPE\n-60.87\n-74.03... 两组等长序列);
> 3. 原页面(page.find_drawings() 有大量正交矩形/线条)与文本 bbox 重叠。
> - 重组方法:把各块的 \n 行按顺序横排对齐成行——第 1 块的第 n 行 + 第 2 块的
> 第 n 行 + … = 表格第 n 行;表头行(第一行)单独一行。组完用
> len(set(len(r) for r in rows))==1 校验每行等长,不等长则回原文 PNG 人工对齐。
> - 翻译阶段规则:逐单元格翻译(保持行×列不变),不要整块连译;
> 数字、单位、Rsq./R² 等统计符号原样保留;列头类型名照译
> (TYPE A→A型)。⚠️ 翻译易产生词间空格丢失/粘连(如 TYPE D→TYPED),
> 重组时必须对照原文列头逐格校对修正。
> - 渲染阶段规则(reportlab):Table(data, hAlign="CENTER") +
> ("GRID",(0,0),(-1,-1),0.7,colors.black) 全框线 +
> ("BACKGROUND",(0,0),(-1,0),#DDDDDD) 表头灰底;第一列左对齐、数据列居中
> (ParagraphStyle(alignment=1));行内 Paragraph 需 spaceAfter=0 防行高过大。
> HTML 输出同理用 <table border>,不要用 <pre> 堆文字。
>
> 附图 / 化学式 / 曲线图的文字原位翻译:
> - 对于扫描件 PDF 中的附图(如化学结构式、反应方程式、曲线图、流程图),仅把图整体嵌入译文
> 并另附中文图注是保底方案;更高的要求是:识别图中的文字,将其翻译后原位覆盖回图上,
> 保留原图版式。
> - 实现管线(已在本环境验证,实例见 werner_paper/):
> 1. 取 word 级 bbox(无系统 Tesseract 二进制时用 tesseract.js):
> js
> const worker = await Tesseract.createWorker('deu');
> const { data } = await worker.recognize(img, {}, { blocks: true, text: true });
> // 遍历 data.blocks → paragraphs → lines → words,取 w.text 与 w.bbox{x0,y0,x1,y1}
>
> ⚠️ tesseract.js v7 默认 blocks:false:直接 Tesseract.recognize() 只能拿到 data.text,
> blocks / tsv / box 全为空。必须 createWorker 并在第 3 个参数显式传 {blocks:true}。
> (若用户本机装有系统 Tesseract,也可用 pytesseract.image_to_data(..., output_type=Output.DICT)。)
> 2. 按术语表翻译这些文字块(化学结构式中的元素符号、数字、箭头保持不变,只译标签与图注,
> 如 Azin→吖嗪、Radikalkation→自由基阳离子、Azodikation→偶氮阳离子);
> 3. 用 PIL 在原图上用背景色填充原文字区域(外扩 2–3px 清除抗锯齿),再用中文字体在 bbox 位置写入中文;
> - 背景色实测法:Counter(img.resize(小图).convert('RGB').getdata()).most_common(1),
> 扫描件通常为纯白 (255,255,255);
> - 中文字体:Windows 用 C:/Windows/Fonts/simhei.ttf(黑体,最清晰);
> - 先统一擦除所有框,再统一写字,否则后擦的框会覆盖先写的字;
> - 字号按框宽高递减自动适配,短标签居中、图注左对齐;
> 4. 将处理后的图另存到 pages_zh/(保留原图),再嵌入 HTML/PDF。
> - 校验方法:用 ImageChops.difference(原图, 覆盖图) 检查目标框变化率(应 >3%)与框外改动(应为 0)。
> - 限制与注意事项:
> - OCR 对图中倾斜、手写、过密文字识别率有限,需人工校对;
> - 化学结构式、反应箭头、键线、坐标轴曲线等只译文字标签,不改动图形本身;
> - 若图中文字与背景对比复杂,建议先整体保留原图,再在译文段落中逐项对照翻译(如:
> “图 3 纵轴 E₄₀₅ 表示 405 nm 处吸光度;曲线标注 1:2 / 1:5 / 1:10 / 1:25 / 1:100 表示 ABTS 对葡萄糖的摩尔过量”)。
> - 推荐默认策略:高保真化学/生物/医学文献,先输出「原图 + 中文图注 + 图中文字对照说明」;
> 仅在用户明确要求“图中文字也要翻译覆盖”时,才执行 PIL 原位覆盖流程。
>
> OCR 两栏 / 多栏 PDF 的注意事项:
> - tesseract.js 对双栏或多栏扫描页会把左右栏按阅读顺序(通常自上而下)合并成一段文本,
> 极易导致右栏或左栏内容丢失/错位(本次 werner1970.pdf 第 5 页即因此漏译半页)。
> - 处理方案:翻译前必须对照原图(或渲染后的 PNG)检查每页 OCR 输出;若发现栏目错乱,
> 应按原图栏位手动拆分后再译;生成 PDF 译文时可用 [左栏]/[右栏] 标注帮助阅读。
>
> 输出 Word(.docx)时(python-docx,已验证):当目标格式为 .docx(尤其是用户明确要求 Word 版)且环境离线/无 Word 时,用 python-docx 直接生成可编辑双语对照文档,无需系统 Word:
> - 安装:python -m pip install python-docx(放入隔离 venv,本环境实测 1.2.0 可用)。
> - 中文字体必须同时设置东亚字体,否则中文以默认西文字体渲染而乱码/方块:
> python
> from docx.oxml.ns import qn
> style = doc.styles['Normal']
> style.font.name = '宋体' # 或 'Microsoft YaHei'
> rpr = style.element.get_or_add_rPr()
> rpr.get_or_add_rFonts().set(qn('w:eastAsia'), '宋体')
> # 每个 run 同样锁定:run._element.get_or_add_rPr().get_or_add_rFonts().set(qn('w:eastAsia'), '宋体')
>
> - 每页结构:add_heading("第 N 页") → add_picture(原页PNG, width=Cm(15))(原图居中,保证附图/表格/化学式可见)→ add_paragraph("【中文译文】") → 逐段 add_paragraph(zh)。
> - 原图 PNG 直接复用 OCR 阶段渲染的 page_NNN.png(PyMuPDF dpi≈200);docx 内嵌后文档较大(51 页约 25 MB)属正常。
> - 化学式、曲线图、数据表以原图保留(OCR 往往只抓到表头、漏掉表体,图中可见即可),正文做中文化,数字/专名不篡改。
> - 已校验实例:FR 2 875 409 A1(法语扫描件 51 页)→ tesseract.js(fra) OCR → 内联译中 → python-docx 生成 FR2875409A1_固体分散体药物组合物_中文译本.docx(51 张原图 + 约 22k 中文字),Word 打开中文显示正常、可检索。
> - 若仅要纯中文终稿(不要原图),去掉 add_picture 那一行即可;若要封面著录项,开头用 doc.add_paragraph() 写公开号/申请人/领域等。
英文医学/光谱类专利 EN→ZH 高频术语(脉搏血氧 / 血液成分监测,可复用)
此类专利(如 Masimo「ACTIVE PULSE BLOOD CONSTITUENT MONITORING」HK1009734B / EP0831738)属无创光谱检测,术语稳定。翻译子代理可直接复用此表,保证跨专利一致性:
- blood constituent = 血液成分;blood glucose = 血糖;noninvasive = 无创(的);spectroscopic = 光谱(的)
- active pulse = 主动脉冲(主动诱导的血流脉冲,区别于人体自然脉搏);electromagnetic radiation = 电磁辐射
- attenuation = 衰减;absorption = 吸收;Beer-Lambert law = 比尔-朗伯定律;extinction coefficient = 消光系数;path length = 光程(路径长度)
- oxygen saturation = 血氧饱和度;hemoglobin = 血红蛋白;oxyhemoglobin = 氧合血红蛋白;reduced/deoxyhemoglobin = 还原/脱氧血红蛋白;carboxyhemoglobin = 碳氧血红蛋白;methemoglobin = 高铁血红蛋白;hematocrit = 红细胞压积
- arterial = 动脉的;venous = 静脉的;cuff = 袖带;wavelength = 波长;optical characteristic = 光学特性;signal-to-noise ratio = 信噪比;calibration = 校准
- emitter = 发射器(发光器件);detector = 检测器;photodetector = 光电探测器;probe = 探头;sensor = 传感器;LED = 发光二极管;pulse oximeter = 脉搏血氧仪
- therapeutic drug = 治疗药物;drug of abuse = 违禁药物;fleshy medium = 肉质介质(肉体组织);volume = 体积;intensity = 强度;energy = 能量
- Claims = 权利要求;What is claimed is = 所要求保护的是;comprising = 包括;wherein = 其中;characterized in that = 其特征在于;embodiment = 实施方式;preferably = 优选地;approximately = 大约;substantially = 基本上
- 同族官方译文:德文 Patentansprüche = 权利要求;法文 Revendications = 权利要求(EP 专利常附,一并译出以覆盖整页)
特殊页处理经验(HK 双语封面 / 图纸页):
- HK 标准专利封面含香港知识产权署的中文印章(OCR 常为乱码方块),正文为英文——只需把封面著录项(公开号/申请人/发明人/分类号)中文化,中文印章乱码忽略。
- 图纸页(figures / drawings,常占后半册,OCR 仅几十~几百字符:图号、附图标记数字、简短图注)翻译子代理应输出一句说明(如「(本实施例附图,主要为系统/电路框图,原文无文字说明,见原页影像)」),不臆造图纸内容;图表中文字以原图保留,正文仅中文化图注。
- 公式 OCR 噪声(如矩阵式、比尔-朗伯式错位)在译文中按光谱学/矩阵代数常识还原并注明「原式保留」,不篡改符号与编号。
意大利语生物/抗体专利 IT→ZH 高频术语(可复用)
此类专利(如 IT 102021000008201 B1「单链可变区抗体片段 scFv 用于鉴定 CD79B 细胞外区」Lexico Srl / Perriello)属抗体工程/肿瘤免疫治疗,正文意大利语为主、常附英文权利要求 + EPO 检索报告/书面意见。翻译子代理按页面实际语言译(意→中、英→中皆可),并复用下表保证跨专利一致性:
- frammento anticorpale della regione variabile a catena singola (scFv) = 单链可变区抗体片段(scFv);single chain Fragment variable (scFv) = 单链可变区片段
- porzione extracellulare / extracellular (domain) = 细胞外部分(胞外区);CD79B = CD79B(蛋白,保留符号);anticorpo monoclonale = 单克隆抗体;monoclonal antibody = 单克隆抗体
- immunoglobuline del gruppo G = IgG 类免疫球蛋白;catena leggera / light chain = 轻链;catena pesante / heavy chain = 重链;regione variabile = 可变区;regione costante = 恒定区
- CDR (complementarity determining region) = 互补决定区(CDR);sequenze amminoacidiche / amino acid sequence = 氨基酸序列;linker = 连接肽;dominio / domain = 结构域;epitopo / epitope = 表位
- linfomi / lymphoma = 淋巴瘤;immunoterapia / immunotherapy = 免疫治疗;anticorpo-drug conjugate (ADC) = 抗体-药物偶联物(ADC);cellula / cell = 细胞;legante / binding = 结合;specifico / specific = 特异的
- descrizione = 说明书;rivendicazioni = 权利要求;Claims = 权利要求;riassunto = 摘要;titolo = 名称;campo = 领域;stato della tecnica = 现有技术;esempi = 实施例
- caratterizzato da / characterized in that = 其特征在于;comprendente = 包括;in cui = 其中;secondo (le rivendicazioni) = 根据(权利要求);sequenza = 序列;preferibilmente = 优选地;essenzialmente = 基本上;in particolare = 特别地
- 检索报告/书面意见页:rapporto di ricerca = 检索报告;Written Opinion = 书面意见;documenti considerati di rilievo = 视为相关的文献;Citazione del documento = 文献引用;Categoria = 类别(X/Y/A 等保留);Esaminatore = 审查员;Data di completamento = 完成日期;novelty = 新颖性;inventive step = 创造性;obvious = 显而易见的;prior art = 现有技术;% identical = 同一性百分比
- 行政/著录项:Ricevuta di presentazione = 申请受理回执;Depositante = 申请人;Inventore = 发明人;Rappresentante = 代理人;Ministero dello Sviluppo Economico - Ufficio Italiano Brevetti e Marchi = 经济发展部意大利专利商标局;Data di presentazione/deposito = 申请日;Numero di rivendicazioni = 权利要求项数;domanda = 申请;risposta alla comunicazione = 对通知的答复
- 序列页(SEQ ID NO: 1–22 等):图号 Figura = 图;Sequenze amminoacidiche = 氨基酸序列;CDRs delle catene = …链的 CDR;同一性百分比(如 95% / 86.4%)与 SEQ ID NO 编号原样保留不篡改。
日语专利 JA→ZH 高频术语(可复用,已验证 JP3363150B2)
日本「特許公報」多为文本层可提取的 PDF(无需 OCR,PyMuPDF get_text() 即可),
仅扫描件才需 tesseract.js(jpn) OCR。正文日文为主,常含英文权利要求/同族对照。
翻译子代理按实际语言译(日→中、英→中皆可),并复用下表保证跨专利一致性:
- 特許公報 = 专利公报;特許番号 / 特許第〜号 = 专利号;発行日 = 授权公告日;登録日 = 登记日
- 出願番号 = 申请号;出願日 = 申请日;特願平4-507451 = 平成4年(1992)申请第507451号
- 特許権者 = 专利权人;出願人 = 申请人;発明者 = 发明人;代理人 / 弁理士 = 代理人 / 专利代理人
- 審査官 = 审查员;審査請求日 = 审查请求日;優先権 = 优先权;優先日 = 优先权日
- 国際出願番号 = 国际申请号;国際公開番号 = 国际公开号;国際公開日 = 国际公开日
- Int.Cl. = 国际专利分类;識別記号 = 标识符号;請求項の数 = 权利要求项数
- 発明の名称 = 发明名称;特許請求の範囲 = 权利要求书;【請求項N】 = 【权利要求N】
- 背景技術 = 背景技术;課題 = 课题(要解决的技术问题);手段 = 手段;効果 = 效果
- 発明の詳細な説明 = 具体实施方式 / 发明的详细说明;実施の形態 = 实施方式
- 要約 = 摘要;図面の簡単な説明 = 附图简要说明;産業上の利用可能性 = 工业实用性
- 符号 = 附图标记 / 标号;図 = 图;段落 = 段落
- パルスオキシメータ = 脉搏血氧仪 / 血氧仪;プロセッサ = 处理器
- 光検出器 / 光電検出器 = 光检测器 / 光电检测器;アナログーデジタル変換器 = 模数转换器(A/D 转换器)
- 適応アルゴリズム = 自适应算法;最小自乗アルゴリズム = 最小二乘算法;最小自乗格子 = 最小二乘格型
- 適応ノイズキャンセラ = 自适应噪声消除器(ANC);ノイズ基準信号 = 噪声参考信号
- 酸素飽和度 = 血氧饱和度;ヘモグロビン = 血红蛋白;動脈 = 动脉;静脈 = 静脉;カフ = 袖带
- 波長 = 波长;発光ダイオード(LED) = 发光二极管;エミッタ = 发射器;検出器 = 检测器
- プローブ = 探头;センサ = 传感器;ディスプレイ = 显示器;較正 = 校准
- 非侵襲 = 无创;分光 / スペクトル = 光谱 / 频谱;減衰 = 衰减;吸収 = 吸收
- ビール・ランベルトの法則 = 比尔-朗伯定律;信号対雑音比 = 信噪比;血液成分 = 血液成分
- 所望信号 / 複合測定信号 = 期望信号 / 复合测量信号;不期望信号 = 不期望信号(噪声/干扰)
- マシモ・コーポレイション = 迈心诺公司(Masimo Corporation);ディアブ,モハメッド = Mohamed Diab(发明人)
- 句式:〜であって、 = 一种〜,其包括;〜を含む = 包括〜的〜;ことを特徴とする = 其特征在于;
請求項Nに記載の〜 = 根据权利要求N所述的〜;さらに〜を含む = 还包含〜;好ましくは = 优选地;実質的に = 基本上 - 平成年换算:平成N年 = 1988 + N 年(平成4年=1992,平成15年=2003)
JP 公报文本层噪声修复(已验证):
- 权利要求页眉常被拆坏:パ.(2 )キシメータ → 应还原为 【請求項2】…血氧仪;
キシメータ 实为 オキシメータ(oximeter)首字错识,依血氧仪领域判读。
- 分类号空格插入:A6 1 B 5/145 = A61B 5/145;GO 6 F = G06F。
- 著录项音译(代理人「ナンバー •シイ」等)照音译保留即可。
- 图纸/扉页续页若原文几无文字,译文写「(本实施例附图,主要为系统/电路框图,原文无文字说明,见原页影像)」,不臆造。
脚本命名注意(已踩坑):工作目录下的脚本不要命名为 inspect.py——会与 Python 标准库
inspect 模块冲突,导致 import fitz/pymupdf 触发循环导入 AttributeError: module 'fitz' has no attribute 'open'。
改用 check_pdf.py 等名称即可。
西班牙语/英语/德语 药物化学专利 ES/EN/DE→ZH(可复用,已验证 MXPA05005825A)
墨西哥 IMPI 专利申请多为西班牙文文本层 PDF(无需 OCR),常是 PCT 国家阶段:
西语正文 + 德语 PCT 扉页(第2页,WIPO 模板)+ 可能的英文摘要。本发明为 SGLT(钠-葡萄糖
协同转运蛋白)抑制剂类——芳香族氟代糖苷衍生物,用于治疗糖尿病等。翻译子代理按每页实际
语言译(西→中、德→中、英→中),并复用下表保证跨专利一致性:
- SOLICITUD de PATENTE = 专利申请;Fecha de publicación = 公开日;Fecha de presentación = 申请日
- Número de solicitud = 申请号;Número de solicitud PCT = PCT 申请号;Número de publicación PCT = PCT 公开号
- Int. Cl. = 国际专利分类;Prioridad = 优先权;Solicitante = 申请人;Inventor(es) = 发明人
- Descripción = 说明书;Estado de la técnica / Antecedentes = 现有技术 / 背景技术
- Reivindicaciones = 权利要求(西语专利用此词,不是 claims);Resumen = 摘要
- Campo de la invención = 发明领域;Realización / Ejemplo = 实施例 / 实施方式
- Composición farmacéutica = 药物组合物;La presente invención = 本发明
- caracterizado por = 其特征在于;que comprende = 包括;en el que / en la que = 其中
- preferiblemente = 优选地;especialmente = 特别地;aproximadamente = 大约;sustancialmente = 基本上
- 德语扉页:Nach dem Vertrag über die internationale Zusammenarbeit auf dem Gebiet des Patentwesens (PCT) veröffentlichte internationale Anmeldung = 根据专利合作条约(PCT)公布的国际申请;Weltorganisation für geistiges Eigentum = 世界知识产权组织;Internationales Büro = 国际局
- 药物化学/碳水化合物:fluoroglicósido = 氟代糖苷;glucósido = 糖苷;derivado = 衍生物;aromático = 芳香族的;SGLT = 钠-葡萄糖协同转运蛋白;sal fisiológicamente tolerada = 生理上可耐受的盐;producto farmacéutico = 药物产品;formulación = 制剂;dosificación = 剂量;diabetes = 糖尿病;glucosa = 葡萄糖;inhibidor = 抑制剂;síntesis = 合成;reactivo = 试剂;disolvente = 溶剂;cristalino = 结晶的;amorfo = 无定形的;rendimiento = 产率;radical = 基团;sustituyente = 取代基;halógeno = 卤素;flúor = 氟;grupo alquilo = 烷基;arilo = 芳基;heterociclo = 杂环;enlace = 键;isómero = 异构体;estereoisómero = 立体异构体;enantiómero = 对映异构体;racemato = 外消旋体;hidroxi = 羟基;metilo = 甲基;fenilo = 苯基;ecoación = 式;fórmula = 式/化学式
- 英文摘要/权利要求:The invention relates to = 本发明涉及;comprising = 包括;wherein = 其中;characterized in that = 其特征在于;pharmaceutical composition = 药物组合物;therapeutically effective amount = 治疗有效量
OCR 化学记号校正(扫描/文本层噪声,已验证):
- 文本层/扫描件的化学公式常混入 OCR 讹误,应据化学常识校正以利阅读(不篡改原编号):
KjCO3→K2CO3、Hj→H2、CHjCIj/CHClj→CH2Cl2、HCI→HCl、[a]D→[α]D、
0aC/60eC→0°C/60°C、mi→ml、CHa→CH3、OCF.a→OCF3、NaHCOg→NaHCO3、
TMSq→TMSCl、NH?→NH4+、C4iH35FO9→C41H35FO9、ESI'→ESI⁻、(M+CHO2)j→[M+CHO2]⁻、
IC25→IC50、Rj→R²、0=→O-、(0=0)→(C=O)、beta(P)→β(D)、met¡l→metil。
- 化学式/结构式/Markush 通式(式 I、化合物 1–N、变量 R¹–R⁹、n、Cyc1/2)以原图保留,仅译连接文字;
单位(mg、°C、mmol、MPa、nm、ppm、MHz)与数字原样保留不译。
- 跨页接续的权利要求(如权 9→10、式 Ib 延续)按原文分页对应落盘,不跨页合并。
- 多语言混排文档:逐页判断实际语言再译,德/英扉页与摘要照译,保持著录项(申请人 SANOFI-AVENTIS、PCT/WO 号)准确。
韩语专利 KO→ZH(可复用,已验证 KR19940003311B1)
韩国特许厅早期专利公报多为扫描件(无文本层),需用 tesseract.js(kor) 或 kor+eng OCR。
正文韩文为主,著录项与机械/化学术语中夹杂英文。翻译子代理按实际语言译(韩→中、英→中),
并复用下表保证跨专利一致性:
- 대한민국특허청 = 韩国知识产权局(韩国特许厅)
- 특허공보 = 专利公报
- 공고일자 = 公告日 / 公开日;공고번호 = 公告号
- 출원일자 = 申请日;출원번호 = 申请号
- 우선권주장 = 优先权主张
- 발명자 = 发明人;출원인 = 申请人;대리인 변리사 = 代理人 / 专利代理人
- 발명의명칭 = 发明名称
- 도면의간단한설명 = 附图简要说明
- 발명의상세한설명 = 具体实施方式 / 发明的详细说明
- 청구항 / 청구범위 = 权利要求 / 权利要求书
- 요약 = 摘要;실시예 = 实施例;종래 = 现有 / 传统
- 본 발명 = 本发明
- 로타리 진공펌프 = 旋转真空泵
- 급속분해장치 = 快速分解装置 / 快速拆卸装置
- 펌프 = 泵(OCR 常讹为
필프/담프,按上下文还原为 泵) - 진공 = 真空;로터 = 转子;스테이터 = 定子;스테이터캠 = 定子凸轮(cam)
- 작동모터 = 驱动电机 / 工作电机;작동모듈 = 工作模块 / 驱动模块;작업블록 = 工作滑块 / 工作块
- 스탠드 = 支架 / 支座;슬라브 = 滑板 / 滑块;커플링 / 카플링 = 联轴器 / 联轴节
- 축 = 轴;베어링 / 버어링 = 轴承;씰링 / 씬링 = 密封 / 密封环
- 칼라 = 轴环 / 套环(collar)
- 하우징 = 壳体 / 外壳;케이싱 = 壳体 / 箱体;오일블록 = 油块 / 油腔
- 가스켓 = 垫片 / 垫圈(gasket)
- 가동부 = 可动部 / 运动部件;고정부 = 固定部 / 固定部件;칼날 = 叶片 / 刮板
- 닥트 / 통로 = 通路 / 通道 / 管道
- 배출플랜지 = 排出法兰 / 出口法兰;흡입플랜지 = 吸入法兰 / 入口法兰
- 배출밸브 = 排出阀 / 出口阀;흡입밸브 = 吸入阀 / 入口阀
- 챔버 = 腔室 / 工作室
- 정상(위)영역 = 正常(上)区域 / 正常位置区域
- 자동(양판)(poppet)밸브 = 自动(阀瓣)提升阀 / 自动(瓣式)止回阀(poppet valve)
- 스프링 = 弹簧;고리모양링좌 = 环形环座 / 环状环座;냉각해 = 冷却鳍片 / 散热片(cooling fin)
- 링 = 环 / 密封环;직선안내(캐리지) = 直线导向(托架)/ 直线导轨(carriage)
- 천공고체상자 = 带孔固体箱 / 通气箱 / 油气分离箱
- 로드 / 롯드 = 杆 / 拉杆(rod)
- 레버 = 杠杆 / 手柄;관절 = 关节 / 铰接;정지 = 止动 / 限位
韩语 OCR 后处理(已验证 KR19940003311B1):
- tesseract.js(kor) 对扫描件识别时,输出常把每个韩文音节用空格分开(如 로 타 리 진 공 펌 프),
需用 cleanup 脚本删除相邻韩文音节(U+AC00–U+D7A3)之间的空格,恢复为 로타리진공펌프。
- cleanup 原则:仅删除相邻韩文音节之间的空格,保留韩文与非韩文之间的空格及换行,保留段落结构。
- OCR 常见讹误校正(不篡改原编号):디애 N → 제 N(第 N);필프 / 담프 → 펌프(泵);
고청 → 고정(固定);카플링 → 커플링(联轴器);버어링 → 베어링(轴承);
60006[ → poppet(提升阀);롯드 → 로드(杆)。
- 早期韩国公报扫描件质量不一,若某页识别率过低,可换更高 dpi(300)重渲染后重 OCR;
图纸页文字极少时按「本页主要为附图,原文无文字说明,见原页影像」处理,不臆造。
- 语言包来源:kor.traineddata 与 eng.traineddata 可从 https://tessdata.projectnaptha.com/4.0.0/<lang>.traineddata.gz
下载(本环境可直连),解压后放在工作目录,并在 Tesseract.recognize(img, 'kor+eng', { langPath: '...' }) 中指定。
韩语专利 Word 输出要点:
- 扫描件 Korean patent 输出 .docx 时,每页嵌入原图(PNG 250dpi)+ 中文译文,东亚字体设宋体;
页数较少(如本件 8 页)可直接合并为一个 Word 文档交付。
葡萄牙语专利 PT→ZH(可复用,已验证 PT728200E)
葡萄牙工业产权局(INPI)出版的欧洲专利葡萄牙语译本多为扫描件(无文本层),
正文葡萄牙语为主,夹杂英语基因/蛋白符号与序列数据。翻译子代理按实际语言译(葡→中、英→中),
并复用下表保证跨专利一致性:
- INPI = 葡萄牙工业产权局(Instituto Nacional da Propriedade Industrial)
- Número de Publicação = 公开号 / 公布号
- Classificação Internacional = 国际专利分类(Int.Cl.)
- FASCÍCULO DE PATENTE DE INVENÇÃO = 发明专利公报 / 发明专利册
- Data de pedido = 申请日;Prioridade(s) = 优先权
- Data de publicação do pedido = 申请公开日
- Data e BPI da concessão = 授权公告日 / 授权与工业产权公告日
- Titular(es) = 权利人 / 专利权人;Inventor(es) = 发明人;Mandatário = 代理人 / 受托人
- Epígrafe = 发明名称 / 标题;Resumo = 摘要;Reivindicações = 权利要求(葡萄牙语用法,与西语同)
- Descrição = 说明书;Antecedentes / Estado da técnica = 现有技术 / 背景技术
- Campo da invenção = 发明领域;Exemplos / Modos de realização = 实施例 / 实施方式
- Figuras / Desenhos = 附图 / 图;Descrição detalhada = 详细说明
- caracterizado por = 其特征在于;que compreende = 包括 / 包含;no qual / na qual = 其中
- segundo a reivindicação = 根据权利要求;preferivelmente = 优选地;aproximadamente = 大约
- gene = 基因;proteína = 蛋白质;sequência de nucleótidos = 核苷酸序列
- sequência de aminoácidos = 氨基酸序列;ácido nucleico = 核酸;cDNA = cDNA(互补 DNA)
- clone / clonagem = 克隆;vetor = 载体;plasmídeo = 质粒;célula hospedeira = 宿主细胞
- microrganismo = 微生物;bactéria = 细菌;cepa = 菌株;cultura = 培养物 / 培养
- meio de cultura = 培养基;expressão = 表达;expressão recombinante = 重组表达
- proteína recombinante = 重组蛋白;anticorpo = 抗体;antígeno = 抗原;vacina = 疫苗
- composição farmacêutica = 药物组合物;imunização = 免疫接种;imunogénico = 免疫原性的
- epítopo = 表位;domínio = 结构域;região = 区域;porção = 部分 / 片段
- fragmento = 片段;mutação = 突变;deleção = 缺失;inserção = 插入;substituição = 替换
- fusão = 融合;proteína de fusão = 融合蛋白;membrana externa = 外膜
- proteína da membrana externa = 外膜蛋白;afinidade = 亲和力;homologia = 同源性
- PCR (reacção em cadeia da polimerase) = PCR(聚合酶链式反应)
- enzima de restrição = 限制性内切酶;electroforese = 电泳;gel de agarose = 琼脂糖凝胶
- SDS-PAGE = SDS-聚丙烯酰胺凝胶电泳;sequenciação = 测序;nucleótido = 核苷酸
- aminoácido = 氨基酸;códon = 密码子;promotor = 启动子;terminador = 终止子
- sítio de ligação = 结合位点;marcador = 标记;antibiótico = 抗生素
- Haemophilus influenzae = 流感嗜血杆菌
- receptor de transferrina = 运铁蛋白受体 / 转铁蛋白受体
- transferrina = 运铁蛋白 / 转铁蛋白
- Transferrin-binding protein (TbpA/TbpB, Tbp1/Tbp2) = 运铁蛋白结合蛋白(保留符号 TbpA/TbpB/Tbp1/Tbp2)
- HpuA/HpuB、LbpA/LbpB = 保留原符号
葡萄牙语 OCR 与语言包:
- 葡萄牙语扫描件需 por.traineddata + eng.traineddata(por+eng),可从
https://tessdata.projectnaptha.com/4.0.0/<lang>.traineddata.gz 下载解压后放在工作目录,
并在 Tesseract.recognize(img, 'por+eng', { langPath: '...' }) 中指定。
- 葡萄牙语与西班牙语/意大利语同属罗曼语族,术语可相互参照;但权利要求词为 Reivindicações(非 Spanish Reivindicaciones/Italian rivendicazioni)。
- 早期拼写变体:seqüência → sequência(序列),Reqüisitos → Reivindicações。
生物/基因专利中的序列列表页处理(通用):
- 基因/蛋白专利常附大量序列列表(Sequence Listing)页,页面布满单字母核苷酸/氨基酸代码(A/T/G/C 或 20 种氨基酸单字母),OCR 后几乎全为乱码,无连贯自然语言。
- 对此类页不要臆造译文:子代理应输出说明「(本页为序列列表/附图页,原文主要为单字母代码/图示及 OCR 残片,见原页影像)」。
- 若序列页表头含可辨识信息(如 SEQ ID NO:、基因名、长度),在说明中保留这些可读内容;序列正文以原图保留。
- 输出 PDF 时仍嵌入原页影像,确保序列与附图可查。
俄语专利 RU→ZH(可复用,已验证 RU2199723C2):
- 俄罗斯专利(Rospatent 俄罗斯专利与商标局出版)多为文本层可提取 PDF(无需 OCR,PyMuPDF get_text() 即可);仅扫描件才需 tesseract.js(rus) OCR。正文俄文为主,著录项/摘要页常含英文对照(如第 2 页 <12> ABSTRACT OF INVENTION)。
- 翻译子代理按实际语言译(俄→中、英→中皆可),并复用下表保证跨专利(尤其与同族 HK1009734B / JP3363150B2 光谱领域)一致性:
- РОССИЙСКОЕ АГЕНТСТВО ПО ПАТЕНТАМ И ТОВАРНЫМ ЗНАКАМ = 俄罗斯专利与商标局(Rospatent)
- ОПИСАНИЕ ИЗОБРЕТЕНИЯ К ПАТЕНТУ РОССИЙСКОЙ ФЕДЕРАЦИИ = 俄罗斯联邦发明专利说明书
- Заявка = 申请;Заявитель = 申请人;Изобретатель = 发明人;Патентообладатель = 专利权人
- Патентный поверенный = 专利代理人;Приоритет = 优先权;Дата начала действия патента = 专利权生效日
- Дата публикации заявки = 申请公开日;Дата публикации = 授权公告日;Ссылки = 引用文献 / 参考文献
- МПК / Int.Cl. = 国际专利分类(IPC);Заявка РСТ = PCT 申请;Публикация РСТ = PCT 公布
- Дата перевода заявки РСТ на национальную фазу = PCT 申请进入国家阶段日;Адрес для переписки = 通讯地址
- (54) ИСТОЧНИК СВЕТА С РЕГУЛИРУЕМОЙ ДЛИНОЙ ВОЛНЫ ДЛЯ ОКСИГЕМОМЕТРА = (54) 用于血氧计的可调波长光源
- (57) = (57) 摘要;формула изобретения = 权利要求书;пункт формулы / з.п. ф-лы = 权利要求项
- Изобретение относится = 本发明涉及;настоящее изобретение = 本发明;в частности = 特别地
- отличающийся тем, что = 其特征在于;в котором = 其中;согласно пункту N = 根据权利要求 N
- предпочтительно = 优选地;приблизительно = 大约;по существу = 基本上;такой как = 诸如 / 例如
- 光谱 / LED 领域术语(复用 EN 光谱体系):оксигемометр = 血氧计 / 血氧仪;оксигемометрическая система = 血氧测量系统;светодиод (СД) = 发光二极管(LED);источник света = 光源;длина волны = 波长;регулируемая длина волна = 可调波长 / 可调谐波长;ток возбуждения = 驱动电流 / 激励电流;светоизлучающий элемент = 发光元件;зонд = 探头 / 探针(probe);датчик = 传感器 / 检测器(sensor);калибровка = 校准;сдвиг длины волны = 波长偏移 / 波长漂移;поглощение = 吸收;коэффициент поглощения = 吸收系数;коэффициент ослабления = 衰减系数;насыщение кислородом = 血氧饱和度;гемоглобин = 血红蛋白;оксигемоглобин = 氧合血红蛋白;дезоксигемоглобин = 脱氧血红蛋白;неинвазивный = 无创的;фотодетектор = 光电探测器;детектор = 检测器;интенсивность = 强度;отношение сигнал/шум = 信噪比;манжета = 袖带(cuff);спектр = 光谱
- 人名 / 公司(音译保留):МАСИМО КОРПОРЕЙШН = 迈心诺公司(Masimo Corporation);ДИЭБ Мохамед Кеир = 穆罕默德·凯尔·迪亚布(Mohamed Kheir Diab);КИАНИ-АЗАРБАЙДЖАНИ Есмаел = 埃斯梅尔·基亚尼-阿塞拜疆尼(Esmail Kiani-Azarbayjani);РАГСДЭЙЛ Чарлз Роберт = 查尔斯·罗伯特·拉格斯代尔(Charles Robert Ragsdale);ЛЕППЕР Джеймз = 詹姆斯·莱珀(James Lepper)
- 文本层噪声修复:个别词被拆空格(如「МПК7」「Int el?」),照原意还原;摘要页英文译文按英→中译、人名音译保留;「7 с. и 24 з.п. ф-лы, 15 ил.」= 7 页说明书和 24 项权利要求,15 幅图。
- 俄语 OCR 语言包:若遇俄语扫描件,需 rus.traineddata(可加 eng → rus+eng),从 https://tessdata.projectnaptha.com/4.0.0/<lang>.traineddata.gz 下载解压后放在工作目录,并在 Tesseract.recognize(img, 'rus+eng', { langPath: '...' }) 中指定。
子代理写批处理 JSON 的硬性约定(防 JSON 损坏):
- 翻译子代理产出 batch_NNN.json([{"page":N,"src":"<原文>","zh":"<译文>"}])时,绝不能用 Write 工具直接写 JSON 文本——原文/译文里常含未转义双引号(如检索报告文献名 "Clinical development of...")、字面换行,会破坏 JSON 字符串导致 JSONDecodeError。
- 必须让子代理用 Python 脚本 + json.dump(..., ensure_ascii=False) 落盘:src 由 open(txt).read() 原样读入、zh 用 Python 三引号字符串承接,转义全权交给 json.dump;脚本末尾 print(len(json.load(open(out)))) 自校验可解析。合并脚本读取时用 "src" 键(兼容 it/fr/en/es/de 回退)。
- 合并脚本 merge.py 用 {"page":N} 去重;build_pdf.py 用 reportlab 注册 UnicodeCIDFont('STSong-Light'),每页「原版影像(PIL→RLImage,按 A4 余幅缩放)+ 中文译文段落」,颜色用 colors.HexColor('#888888')(勿传整数 0x888888,会 ValueError)。
工作流
第 1 步:确认语言与文件
识别源语言(--from)与目标语言(--to)。若用户未指明源语言且原文是中文/英文,
可据内容判断,必要时反问。目标语言必须明确。
第 2 步:运行翻译
用 Bash 调用脚本(首次运行会自动创建隔离 venv 并安装依赖):
python "<skill>/scripts/translate_doc.py" \
--input "源文件.docx" \
--from zh --to en \
--output "输出.en.docx" \
--backend llm \
--mode target
--backend llm:唯一可用的脚本后端(Google 已停用)。需加:
--base-url <URL> --api-key <KEY> --model <MODEL>(或设环境变量)。
未配置 LLM 端点时不要运行脚本,直接走离线 AI 内联翻译管线。--mode target|bilingual:target只出译文;bilingual原文+译文并列(便于校对)。--output省略时,默认生成<原名>.<src>2<tgt>.<同格式>。
LLM 后端示例:
python "<skill>/scripts/translate_doc.py" \
-i "patent.pdf" -f zh -t en -o "patent.en.pdf" \
-b llm --base-url "https://api.xxx.com/v1" --api-key "sk-..." --model "gpt-4o"
第 3 步:校验与交付
- 脚本成功会输出
TRANSLATED_OK: <路径>;据此把结果文件用present_files交付。 - 通读译文抽查:标题层级、表格、数字/单位/化学式/专名是否保真;
bilingual模式便于
人工核对。
注意事项
- 长文档建议
--mode bilingual先校对,确认无误再出target终稿。 - PDF 图片为结构占位提取;复杂双栏 / 浮动文本框可能顺序有偏差,属已知限制。
- 依赖首次运行自动安装(python-docx / PyMuPDF / reportlab / pytesseract / Pillow,
均为标准库之外的必需项)。扫描件 OCR 还需系统级 Tesseract 二进制 + 源语言
tessdata 包(见上节「扫描件 / 图片型 PDF(OCR)」)。
若要预装或复用指定 venv,设环境变量DOC_TRANS_VENV指向已有 venv。 - 网络受限环境:不要尝试任何 Google 翻译端点(已停用)。若
llm后端不可用
(未配置可直连的 OpenAI 兼容端点),直接走离线 AI 内联翻译管线(PyMuPDF 文本提取
或 tesseract.js OCR → 翻译子代理内联译出 → reportlab / python-docx 渲染),
详见上文「离线 / 沙箱环境的可用替代方案」。
台湾专利 zh-TW → zh-CN + en(已验证 TW201644270A)
台湾(TW)智慧财产局 / TIPO 公布的发明专利 PDF 多为繁体中文扫描件,部分有文本层可直接 PyMuPDF get_text 抽取,但说明书的全页扫描图样几乎都是位图(53 页 TW201644270A 为典型示例)。本节给出针对台湾专利的双语翻译管线与术语映射。
1. 离线管线(与日/韩/葡/俄专利同构)
- 环境:复用
D:/Workbuddy/2026-08-26-19-01-20/patent_work/.venv(PyMuPDF + reportlab + Pillow);tesseract.js 位于C:/Users/Lenovo/.workbuddy/binaries/node/workspace/node_modules/tesseract.js(v7)。 - PDF 结构检查:
fitz.get_text()长度 = 0 → 扫描件;TIPO 公开本通常 50–60 页。 - 逐页 PNG 渲染:PyMuPDF
get_pixmap(matrix=Matrix(3,3), alpha=False)直接 300dpi 写出到pages/page_NNN.png,同时作为后续 PDF 内嵌影像。 - OCR:
chi_tra+eng语言包(chi_tra.traineddata 约 59 MB,从https://tessdata.projectnaptha.com/4.0.0/chi_tra.traineddata.gz下载;首次约 5–10 分钟,缓存复用即可)。本地保留eng.traineddata(如已存在于patent_work/)。 - 文本清洗:删除相邻 Han 字符之间的多余空格(tesseract.js v7 默认会把每个字单独占位),并对高频 OCR 噪字按下面「OCR 噪声表」批量校正。
- 繁→简 + 译英:分批并行子代理内联译中 + 译英;输出
{page, src, zh, en}JSON 数组,必须用json.dump(..., ensure_ascii=False, indent=1)落盘,禁止直接用Write写 JSON(引号/换行易损坏)。 - 合并 / 双语 PDF:
merge.py→master.jsonl;build_pdf.py用TLANG=zh/TLANG=en分别输出(中文 STSong-Light CID 字体,英文 Helvetica)。
2. 台湾专利 → 简体中文 / 英文 核心术语
| 繁体(zh-TW) | 简体中文(zh-CN) | English |
|---|---|---|
| 發明名稱 | 发明名称 | Title of Invention |
| 申請人 / 發明人 | 申请人 / 发明人 | Applicant / Inventor |
| 申請專利範圍 | 申请专利范围(台湾专用语)/ 权利要求 | Claims |
| 圖式 / 圖式簡單說明 | 图式 / 附图简要说明 | Drawings / Brief Description of the Drawings |
| 先前技術 | 现有技术 / 背景技术 | Prior Art / Background Art |
| 實施方式 / 實施例 | 实施方式 / 实施例 | Embodiments / Detailed Description |
| 光場 / 光場顯示 | 光场 / 光场显示 | light field / light field display |
| 全視差 | 全视差 | full parallax |
| 全像元件 / 全像元素 (hogel) | 全像元件 / 全像元素(hogel) | holographic element / hogel |
| 視差 | 视差 | parallax |
| 微透鏡陣列 | 微透镜阵列 | microlens array (MLA) |
| 積分成像 | 积分成像 | integral imaging (II) |
| 像差(在 DIBR 上下文) | 像差(disparity/aberration 双义) | aberration / disparity (DIBR context) |
| 深度影像 | 深度影像 | depth image |
| 基於深度影像之再現 / DIBR | 基于深度影像之再现 | depth-image-based rendering (DIBR) |
| 序列控制器 | 序列控制器 | sequence controller |
| 熵解碼器 / 硬體單元 | 熵解码器 / 硬件单元 | entropy decoder / hardware unit |
| 逆影像變換模組 | 逆影像变换模组 | inverse image transform module |
| 全像元素內容重複模組 | 全像元素内容重复模组 | hogel content repetition module |
| 交錯器模組 / 交錯器 | 交错器模组 / 交错器 | interleaver module / interleaver |
| 像素調變器 | 像素调变器(保留台湾术语)/ 像素调制器(mainland) | pixel modulator |
| 誤差校正模組 | 误差校正模组 | error correction module |
| 種子像差記憶體 | 种子像差记忆体 | seed aberration memory |
| 種子全像元素紋理記憶體 | 种子全像元素纹理记忆体 | seed hogel texture memory |
| 紋理記憶體 | 纹理记忆体 | texture memory |
| 輸入 / 輸出記憶體 | 输入 / 输出记忆体 | input / output memory |
| 像差估計 | 像差估计 | disparity / aberration estimation |
| 調變 / 調製 | 调变(保留术语)/ 调制 | modulation |
| 頻寬 | 带宽(mainland) / 频宽(tw 译式) | bandwidth |
| 視訊 | 视讯(tw)/ 视频(mainland) | video |
| 顯示器 / 顯示面板 | 显示器 / 显示面板 | display |
> 台湾专利 → 简体译文的术语策略:以「繁转简 + 保留台湾术语」为主(如 记忆体、模组、调变、全像元素、视讯),仅在用户明确要求 mainland 风格时改为「存储器、模块、调制、全息/全息元素、视频」。之/係 等台湾文言可保留以贴近源文,但用户偏好 mainland 风格时改为「的/是」。
3. 繁体中文扫描件 OCR 噪声表(高频)
OCR (chi_tra+eng) 扫描件常见错字,按词义校正:
| OCR | 校正 | 备注 |
|---|---|---|
| 樓組 / 樗組 | 模组 | 「模块」在源文中常写作「模組/模组」 |
| 謚群 | 误差 | 「误差」误识为「謚群」 |
| 像莊 / 像群 | 像差 | 在 DIBR 上下文中应为「像差」 |
| 調讚 / 調嬿 | 调变 | 「调制/调变」 |
| 細統 | 系统 | 系统 |
| 顳示 / 顯示 | 顯示 | 顯→显示 |
| 搜述 / 描站 / 描童 | 描述 | describe |
| 嫘體 | 媒体 | medium |
| 浦量 | 海量 | huge |
| 反覆技術 | 交互技术 | interactive techniques(SIGGRAPH 文献) |
| 高效貴料 | 高效资料 | efficient |
| 概站 | 概括 | generally |
| 轄入 | 输入 | input |
| 編碤 / 編硤 | 编码 | encoding |
| 平穆 | 平移 | translate / shift |
| 粉影像 | 原影像 | original image |
| 方素 | 方面 | aspect |
| 傳輿 | 传输 | transmit |
| 不遮 | 不适 | not suitable |
| 方絨 | 方案 | scheme / approach |
| 倒數記憶體 | 系数记忆体 | coefficient memory |
| 匪浪捨立速伸 | 硬体单元 | hardware unit(OCR 全残) |
| 通影僚緝 | 通道逻辑 / 通道 | channel logic |
| 緝 | 编(动词) | encode(残字) |
| 背茹利器 | 背光…(OCR 不可辨) | — |
4. 关键坑位(来自 TW201644270A 验证)
- 封面 / 书目前页(页 1–6)的子代理极易失败:OCR 噪化严重 + 书目字段命名((71)/(72)/(54)/(57) 等)易让子代理误判为敏感信息而拒答;推荐主代理直接翻译这 6 页,把正文(页 7+)交给并行子代理。已在 TW201644270A 上验证:连续 3 个子代理对封面均失败,主代理直接读
ocr_clean/page_NNN.txt内联译一次性产出batch_01.json(6 条记录)。 - 代表图符号清单(图 19)跨多页:第 1 页底部 + 第 2 页 + 第 4 页 三处出现同一个清单的不同片段。子代理若不交叉引用,会出现「同一编号多种命名」。做法:先抽取 body 内文(页 ≥ 7)中所有提到 1901–1969 的 EN 译句,以 body 的 EN 命名作为 ground truth 反推清单条目(如 1962 =
Minc memory、1964 =seed aberration memory、1966 =seed hogel texture memory、1968 =hogel memory block、1969 =output memory module)。 - chi_tra.traineddata 体积大:~59 MB 的 gz 包首次下载 5–10 分钟,强烈建议缓存到工作目录(
patent_work/tw_patent/chi_tra.traineddata)跨会话复用;不要每会话重新下载。
- 本机历史会话中若已存在.traineddata或.traineddata.gz,优先find复用;
- 若 tesseract.js v7 使用langPath指向本地目录,必须提供压缩格式的.traineddata.gz,
仅有解压后的.traineddata时,用gzip -c -k chi_tra.traineddata > chi_tra.traineddata.gz生成。 - tesseract.js v7
createWorker签名:createWorker(lang?, userOptions?),第一参数是 lang 字符串(如'chi_tra+eng'),不是{langPath: ...}。v5 的createWorker({langPath})在 v7 中被弃用,直接传 options 对象会抛langsArr is not defined。正确:
js const worker = await createWorker('chi_tra+eng', { langPath: './', workerPath: ... }); - tesseract.js 输出每字独占位:chi_tra OCR 出来的 Han 字符之间会被插入多余空格,必须在进入翻译前用 Python 正则删除:
re.sub(r'([\u4e00-\u9fff])\s+([\u4e00-\u9fff])', r'\1\2', t)反复迭代。 - 公开日 OCR 残片 → 不可臆造:TW201644270A 公开日 OCR 残片
+12 A 16 8→ 应还原为中华民国105年12月16日(即 2016-12-16);类似书目字段若 OCR 残缺,应以官方数据库为参照(不得凭空)。 - 页面布局:报告书原文上中文摘要与英文摘要共占同页,第 4 页「化学式栏」在台湾专利中常为
无;翻译时保留「无」字样即可。 - 双 PDF 输出:当用户要求
zh + en双语产物时,分别运行TLANG=zh build_pdf.py与TLANG=en build_pdf.py生成两份独立 PDF(每份含原版扫描影像 + 译文),不要做三栏对照(源 + zh + en),否则单页信息密度过大、可读性差。