KakaoTalk 的来信为什么要按一下 Ctrl+C 才翻译
用我们的工具跑 KakaoTalk,发消息是全自动的:打中文按回车,翻译完自动发出去。
但看懂对方的消息,需要你选中它按一下 Ctrl+C。
WhatsApp 那边不用。同一个软件,为什么两边不一样?
因为 KakaoTalk 的聊天内容不是“文字”
WhatsApp 网页版本质上是个网页。网页里的每一条消息都是实实在在的文本节点, 程序读得到,所以我们能在你不动手的情况下把译文显示出来。
KakaoTalk 电脑版是一个 Windows 原生程序,而且它的聊天区域是自己画上去的。
Windows 有一套无障碍接口(UI Automation),本来是给读屏软件用的—— 正常的程序会把界面上的文字通过这套接口暴露出来,这样视障用户的读屏软件才能念出来。 我们读 KakaoTalk 的窗口,也走的是这套接口。
问题是:KakaoTalk 的聊天气泡在这套接口里是空的。 窗口结构能读到、控件层级能读到、按钮能读到,唯独消息文本读不到—— 因为那些字是被绘制成像素画在窗口上的,不是以文本形式存在的控件。
软件里有个「一键自检来信读取」的按钮,跑一下就能看到这个结论。 另有「读取 KakaoTalk 窗口结构」,导出来的树里也确实没有消息内容。
那为什么不用 OCR 硬读?
技术上可以:定时截屏聊天区域,识别里面的文字。我们评估过,没有走这条路, 理由有三条:
一、识别错误会进到你的生意里。
OCR 认错一个字符,KT-2201 变成 KT-220I,价格 3,200 变成 3.200。
你看到的是一句读起来很通顺的中文译文,根本不会怀疑它译错了。
错得看不出来,比明显报错危险得多。
二、要一直截屏。 为了不错过消息,得持续截取聊天窗口。这意味着后台常驻的屏幕捕获、 持续的 CPU 占用,以及——你屏幕上那块区域的所有内容都会被送去识别, 包括你并不想让它经手的东西。
三、额度会被烧掉。 视觉识别按识别出的字数计量。持续截屏识别整个聊天窗口, 会把你的月度额度花在大量根本不需要翻译的内容上(历史消息、界面文字、重复内容)。
复制这条路,其实有两个好处
按一下 Ctrl+C 确实多了一个动作。但换来的东西不只是“能用”:
拿到的是真实文字,不是识别结果。 剪贴板里是 KakaoTalk 自己交出来的原始文本, 一个字符都不会错。型号、数字、日期,怎么发来的就怎么翻。
你决定什么被送出去。 只有你主动复制的那一段才会离开你的电脑。 不复制的内容,我们碰都碰不到。对于经手真实客户往来的工具来说, 这个边界值得多按一次键。
另外,为了不浪费额度,复制中文、纯链接、以及刚刚翻译过的内容会自动跳过。
如果确实有一段复制不出来
图片里的字、或者某些没法选中的界面元素,用截图翻译:
按 Ctrl+Alt+A 框选那块区域,会同时给出识别到的原文和译文。
注意这里的取舍是反过来的:截图翻译是用视觉识别的,所以它有识别错误的可能—— 但因为是你主动框选的、一次性的,成本和风险都可控,和“后台一直截屏”完全是两回事。 原文也会一并显示出来,方便你核对认得对不对。
会一直这样吗
取决于 KakaoTalk 自己。如果它哪天把聊天内容以正常的文本控件暴露出来, 我们立刻就能做成全自动——这部分代码在 WhatsApp 那边已经跑了很久了。
在那之前,我们宁可让你多按一下 Ctrl+C,也不想给你一个看起来全自动、
但偶尔会悄悄把型号认错的东西。
相关:KakaoTalk 的 Ctrl+Enter 设置 · 支持哪些平台 · 截图翻译