终于实现了文档翻译自由 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iX8NEGGn
V2EX    分享发现

终于实现了文档翻译自由

  •  
  •   iX8NEGGn 2023-10-11 21:06:44 +08:00 2695 次点击
    这是一个创建于 814 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <>这篇文章可能会涉及分享发现、提问、推广,但重点在于分享发现,所以发到该节点,恳请见谅。

    文档( PDF 、DOCX )翻译虽然市面上有很多,但大多数都需要上传到云,且翻译后排版效果不理想,费用也不低。

    多年来我一直在寻找能在本地运行、用自己的翻译 API 、较完美的保留原格式、译后能编辑的翻译软件,终于让我找到了解决方案。

    对于 PDF 文件,ABBYY FineReader 可以近乎完美的将 PDF 转换成 DOCX 格式。然后 DOCX 格式可以在 CAT (计算机辅助翻译,比如我用的是 MemoQ )软件中近乎完美的保留原格式翻译。

    但大多数常用的 CAT ( Trados 、MemoQ 、Wordfast 、DejaVu 等)软件都是国外的,他们通常只对接了国外的翻译服务,国内用户要用国外翻译服务门槛较高。

    所以我为 MemoQ 开发了翻译插件,对接了国内各大厂的翻译服务,加起来每个月有一千多万的免费字符量,也对接了多数翻译软件都在用的谷歌、微软的免费逆向 API (不知道什么时候会被和谐),之后也会对接 ChatGPT 。

    这是( https://www.aliyundrive.com/s/NpX1XUg6dpD )没有经过手工检验的完全由谷歌翻译 API 翻译后的得到的双语可编辑文档的演示。

    如果翻译仅仅是为了略读和少量编辑,到这里就完事了,但我想要的是高质量的译后编辑,也就是翻译后一边看一边修改,且要确保术语翻译的一致性等质量保证问题。

    所以不能直接在 Word 中编辑翻译后的译文,因为在外部编辑,CAT 软件无法追踪,失去了 CAT 软件的术语一致性检查等质量保证功能。

    也不能仅在 CAT 软件中编辑,因为它们提供的预览功能实在太简陋了,丢失了大部分 DOCX 格式排版,不利于对上下文的理解,看着也很不舒服。

    所以我又为 MemoQ 开发了外部预览插件,将原文和译文在 Word 中打开,之后在 Word 中双击某译文段落时,对应的原文段落会被高亮,同时也会自动定位到对应的 MemoQ 段落中,这时可以直接在 MemoQ 中修改,修改后的文本会同步更新到 Word ,效果如下:

    预览插件的原理是,从 MemoQ 得到所有段落的原文、译文、ID ,然后在 Word 中进行匹配,当在 Word 中点击某段落时将高亮的段落 ID 发送回 MemoQ ,以达到同步高亮的目的。

    Word 预览插件的功能需求已经实现,使用的是 C# VSTO 开发,但遇到了一个性能问题,也就是我需要获取 Word 纯文本中每个字符在 Word Range 中的索引,这样才能匹配和高亮对应的文本,目前我使用的方法是:

    private RangeTextAndIndexes GetRangeTextAndIndexes(Word.Range range) { var text = new StringBuilder(); var indexs = new List<int> { }; foreach (Word.Range c in range.Characters) { if (c.Text != null) { for (int i = 0; i < c.Text.Length; i++) { indexs.Add(c.Start); } text.Append(c.Text); } } return new RangeTextAndIndexes(text.ToString(), indexs); } 

    这种方法每获取一个字符的 Range 索引(代码中的 c.Start )就是一次 COM 调用,每次 COM 调用接近 20ms ,一百页的文档需要几十秒,虽然只是启动时获取一次,但这样的速度我还是不能容忍。

    直接使用 Word API 中的 Find 方法来匹配也不行,一是我需要更高级的自定义匹配算法来匹配,二是 Find 方法限制最多只能匹配 255 字符。

    我想问的是,有没有其他的 API 能高效获取到纯文本中每个字符在 Word Range 中的索引?或者,其他语言(比如 Javascript )的 SDK 能做到这一点,也可以切换成其他语言开发。亦或者 LiberOffice 、OnlyOffice 等其他软件能更方便做到这一点,换成为其他软件开发插件也行,恳请各位有 Word 插件开发经验的大神给点意见。

    机器翻译插件已开源,外部预览插件将等待解决性能问题后开源。

    地址: https://github.com/JuchiaLu/Multi-Supplier-MT-Plugin

    thinkm
        1
    thinkm  
       2023-10-11 21:22:39 +08:00
    针不戳,老哥能不能优先接入 ChatGPT ,翻译质量吊打其他的。 如果能接入 Azure GPT 就能好了,速度比 GPT 快很多
    iX8NEGGn
        2
    iX8NEGGn  
    OP
       2023-10-11 21:26:53 +08:00
    @thinkm 主要是当时没有测试账号,二是价格有点贵,对接应该很快,比弄明白腾讯、阿里的签名容易多了
    thinkm
        3
    thinkm  
       2023-10-11 21:37:45 +08:00
    @iX8NEGGn 那就建议优先接入 AZURE GPT ,因为看你项目都是中文,翻译应该主要是服务于中文用户。在中国 AZURE 的申请和使用质量都比 chatgpt 容易很多,ChatGpt API 要求国外信用卡,国内基本无法开通
    thinkm
        4
    thinkm  
       2023-10-11 22:12:58 +08:00
    @iX8NEGGn 擦,刚刚去官网看了看 memoq 用不起阿,都是几百刀起步
    iX8NEGGn
        5
    iX8NEGGn  
    OP
       2023-10-14 15:06:48 +08:00   1
    @thinkm 是的,CAT 软件都非常的贵,毕竟目标用户专业的人工译员,memoQ 在 CAT 软件中还算有性价比的了,接下来我将会把这两款插件移植到开源的 OmegaT ,虽然 OmegaT 的界面没那么美观,但 CAT 的核心功能它都有。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1425 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 16:19 PVG 00:19 LAX 08:19 JFK 11:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86