在日常工作中,经常需要处理中英双语文档——将同时包含中英文的内容转换为纯中文版本,同时保留专业术语的英文原名。手动处理效率低下且容易出错,因此我构建了一套自动化的文档转换工具链。
📌 核心需求
输入:中英双语的 HTML/PDF 文档 → 输出:纯中文版本,专业术语保留英文原名,文档格式与原版对齐。
工具链架构
整个处理流程分为五个步骤:
- 文档解析:读取 HTML/PDF 文件,提取文本内容和结构
- 语言检测:识别每个文本段落的语言类型(中文/英文/混合)
- 内容过滤:根据规则移除英文内容,保留中文和专业术语
- 格式重建:将处理后的内容重新组装为与原版一致的格式
- 输出导出:支持 HTML 和 PDF 两种输出格式
核心实现
HTML 解析与处理
使用 BeautifulSoup 4 解析 HTML 文档,遍历 DOM 树,对每个文本节点进行语言检测和内容过滤。
from bs4 import BeautifulSoup
import re
def process_html(input_path: str, output_path: str, keep_terms: set):
"""处理双语 HTML 文档,保留中文和专业英文术语"""
with open(input_path, 'r', encoding='utf-8') as f:
soup = BeautifulSoup(f, 'html.parser')
# 遍历所有文本节点
for text_node in soup.find_all(string=True):
if text_node.parent.name in ['script', 'style']:
continue # 跳过脚本和样式
original = str(text_node)
# 正则:移除英文句子(大写字母开头,包含多个单词),但保留术语
cleaned = remove_english_sentences(original, keep_terms)
text_node.replace_with(cleaned)
with open(output_path, 'w', encoding='utf-8') as f:
f.write(str(soup))
def remove_english_sentences(text: str, keep_terms: set) -> str:
"""移除英文句子,但保留指定的专业术语"""
# 先标记要保留的术语
for i, term in enumerate(keep_terms):
text = text.replace(term, f'__KEEP_{i}__')
# 移除纯英文句子
sentences = re.split(r'(?<=[。!?.!?])\s*', text)
filtered = []
for s in sentences:
# 如果句子中中文字符占比超过阈值,保留
chinese_chars = len(re.findall(r'[\u4e00-\u9fff]', s))
if chinese_chars > 0 or len(s.strip()) == 0:
filtered.append(s)
result = ''.join(filtered)
# 恢复标记的术语
for i, term in enumerate(keep_terms):
result = result.replace(f'__KEEP_{i}__', term)
return result
保留的专业术语
在文档处理过程中,以下类型的英文内容需要保留:
- 产品名称:Amazon Bedrock, Docker, Nginx, 通义灵码
- 技术框架:React, Vue.js, TensorFlow, PyTorch
- 编程语言:Python, JavaScript, TypeScript, Go
- 行业缩写:API, SDK, CI/CD, RAG, LLM, GPU
PDF 处理方案
PDF 的处理比 HTML 更复杂,因为 PDF 本身是版面描述格式而非结构化的文本格式。推荐技术栈:
| 步骤 | 工具 | 说明 |
|---|---|---|
| 文本提取 | PyMuPDF (fitz) | 提取 PDF 中的文字和位置信息 |
| 内容处理 | Python 正则 | 语言检测和内容过滤 |
| PDF 重建 | ReportLab / WeasyPrint | 生成格式化的 PDF 输出 |
| HTML→PDF | pdfkit (wkhtmltopdf) | 将处理后的 HTML 转为 PDF |
质量保证策略
- 格式对齐:处理后与原版逐一比对,确保排版、间距、字体样式一致
- 术语检查:建立术语白名单,自动扫描确保关键术语未被误删
- 分段验证:按章节逐一验证处理结果,便于定位问题
- 人工审校:自动化处理后的关键文档仍需人工最终审核
总结
通过这套工具链,双语文档的处理效率提升了约 80%,同时保持了较高的输出质量。自动化不是要完全替代人工,而是把人工从重复劳动中解放出来,专注于需要判断力的审校环节。