中英互译现在早已不是难事,但能做到翻译前后排版不乱,还是很有挑战。即便使用最强大模型,翻译结果也只能是这样:经过一段时间探索,终于发现一个很好用的翻译智能体。它就是阿里通义的翻译智能体,使用它能做到下面效果:输入一张图片,翻译前后,能做到排版一致,即便这种复杂的多文本框图片结构的排版,一样可以。传送门:https://www.tongyi.com/然后点击上图中「翻译」,如箭头所示,点击后进入下面界面:自动识别语言,目标语言默认为中文。下面是想要翻译图片,目标翻译为中文,所以无需调整:为了展示更清楚的效果,特意截图分开,再单独展示下:通义翻译智能体,不仅能处理图片,还能玩文档翻译,也能做到排版一致,下面来演示。35页大概2-3分钟处理完成,点击右上角 「还原排版」,第一页翻译后的结果:说实话,当我第一次使用时,确实把我震撼到了。排版能做到这么精准吻合,不容易的。把一页 PDF 想像成摆满“文字盒子”的画板:每一段话、标题其实都是一个有位置和大小的矩形框(bbox)。Python包比PyMuPDF 具有能力,把这些框逐个读出来(拿到坐标、宽高、原文字、字体信息等),然后对“框里的文字”做分段翻译,最后再还原回去,大概示例代码如下:importfitzdoc=fitz.open("input.pdf")forpageindoc:blocks=page.get_text("blocks")forbinblocks:rect=fitz.Rect(b[:4])src_text=b[4]tgt_text=translate(src_text)#你的翻译函数page.insert_textbox(rect,tgt_text,fontname="helv",fontsize=12,color=(0,0,0),align=0)doc.save("translated.pdf")
排版难点在于,同一句子翻译前后长度会有差异,有时候会很大。
一般来说,如果中英文长度差很多,就在这个盒子里自动换行、微调字号或字距,让文本刚好塞满不溢出。
说起来容易,真正做好,需要打磨。
总结
这篇文章介绍了翻译后保持原始排版不乱的完整方案与实践体验,介绍了阿里通义翻译智能体在这方面很强。
通义翻译智能体其在图片与多页 PDF 上,不仅翻译准确,还能让译文排版与原文高度一致。
背后的排版原理,将 PDF 视为由多个文字矩形框组成,通过提取每个框的坐标、字体和内容,逐块翻译后再回填到原位置。 |