为什么 AZW3 电子书查字典取词时会选中一整句

Kindle 最有用的功能之一就是字典查询,阅读时遇到陌生的字词,只需要点选一下就能即时调用字典查询含义。最近有小伙伴反应,使用 Calibre 把一本中文电子书转换成 AZW3 格式并拷贝到 Kindle 中,查询字典时想要选取某个字词,却只能选中一整行。这是怎么回事儿?下面咱们来研究分析一下。

azw3-word-choose_1

一、实验测试

发现问题最有效的方法就是把正常的和不正常的放在一起对比分析。所以,我准备了以下从不同渠道获得的 AZW3 格式电子书,然后把它们直接拷贝到 Kindle 中做比较。

  • 使用 Calibre 转换得到的 AZW3 格式电子书
  • 在亚马逊 Kindle 商店购买的 AZW3 格式电子书
  • 使用 KindleGen 转换成 MOBI 格式再推送到云端得到的 AZW3 格式电子书

通过对比发现:使用 Calibre 转换的 AZW3 格式电子书只能选中一整句,而不能选择字词。而从亚马逊 Kindle 商店购买的 AZW3 格式电子书能正常选择字词。使用 KindleGen 转换成 MOBI 格式再推送到云端得到的 AZW3 格式电子书能正常选择字词。接着,我又将 KindleGen 生成的 MOBI 格式电子书直接拷贝到 Kindle,发现和 Calibre 转换的 AZW3 一样只能选中一整句,也不能选择字词。

二、问题分析

从上面的测试可以看出,凡是经过亚马逊服务器处理过的 AZW3,Kindle 就可以选择字词,否则就只会选择一整句。这样就可以得出一个比较合理的结论了。

不论是使用亚马逊官方最新版本的 KindleGen 转换的 MOBI 格式,还是用 Calibre 转换的 AZW3 格式,其实都属于亚马逊 KF8 标准的电子书,我们从 Kindle 商店购买的电子书也都属于此标准。通过 KindleGen 生成的 MOBI 格式跟 AZW3 格式在版式上没有什么差别,将其推送到云端也会被亚马逊服务器转换成 AZW3 格式。本地转换的 AZW3 无法正确取词,被亚马逊服务器转换后却能正确取词了,猜测这可能是亚马逊服务器端对 AZW3 格式进行了如分词之类的特殊处理。但奇怪的是,通过比较用 KindleUnpack 分解两种 AZW3 格式电子书得到的文件,并没有找到什么不同的地方。

另外,如果仔细观察你会发现,不论是从 Kindle 商店购买还是通过亚马逊服务器转换后的 AZW3 格式中文电子书,即便是某些字组合在一起并不是一个词,但查询字典时仍只能两、三个词同时选中,而大多不能自由点选单个字。这很可能是因为分词技术还不成熟,毕竟中文不像英文单词那样,由于词与词之间有空格,很好区分,和搜索引擎的中文分词技术一个道理。当然,这也只是从表象产生的猜测,纯属个人之见,毕竟 AZW3 是亚马逊私有格式,并不开源,具体是什么原因外人无从得知。

三、解决方法

azw3-word-choose_2

解决方法很简单,但都不完美,请自行取舍。对于一本电子书,如果你很在意自由点选字词,不怎么在意版式,可以放弃使用 KF8 标准,在 Calibre 中使用 old 模式把电子书转换 MOBI 格式,而不要使用 new 或 both 模式,也不要转换成 AZW3 格式。如果非常在意排版的话,建议使用最新版的 KindleGen 将电子书转换成 MOBI 格式后,再推送到亚马逊云端,只是这种方法在 Kindle 中会不显示封面。

还有一个解决思路。既然分词只是针对中文电子书而处理的,那我们可以把电子书的语言更改为英文,以避免 Kindle 的“特殊处理”。具体方法就是在使用 Calibre 把电子书转换成 AZW3 格式之前,先“编辑原数据”,更改电子书的“语言”为“英文”,这样也能解决选择一整句的问题。不过这种方法也有一个缺点,那就是,在取词时字典会调用英文字典,需要手动切换一下。(感谢 airmarx 提供的此解决方法)

有帮助,[ 捐助本站 ] 或分享给小伙伴:

发表评论

标注为 * 的是必填项。您填写的邮箱地址将会被保密。如果是在本站首次留言,审核后才能显示。
若提问,请务必描述清楚该问题的前因后果,提供尽可能多的对分析该问题有帮助的线索。

小伙伴们发表了 11 条评论

  1. Chinwe提到的方法确实有效,具体步骤:
    1. 用kindlegen转换原epub文件为mobi文件;
    2. 将mobi文件通过邮箱推送;
    3. kindle联网,同步推送的文件(此时图书无封面);
    4. kindle连电脑,将同步后下载到kindle本体的azw3文件导入calibre;
    5. 在calibre里勾选好导入的图书,再用quality check插件里的fix asin选项处理;
    6. 直接在calibre里选择“发送到设备”(不要保存再拷入kindle,要不然还是没封面);
    7. 把之前从云端同步的书从本机删掉(不然就有两本同样的书了);
    8. 等待kindle建立索引。
    所有步骤结束后,你就有了一本排版完善,既能搜索字词,又有封面,取词时还不用切换词典,可以选择中文字体的本地图书了(云端上还有一个没封面的相同的书)。
    总之还是相当繁琐,最好一次多弄几本。以后希望有插件能一步搞定。

    • 成功,谢谢!也不是显示DOC了,有封面可选词。唯一遗憾的是变成本地图书了,要是云端的就更完美了,这样还可以同步笔记。

  2. calibre有个插件叫Quality Check,选中“使用最新版的 KindleGen 将电子书转换成 MOBI 格式后,再推送到亚马逊云端” 得到的azw3,fix asin就可以去掉个人文档并显示封面了。这种方法和lSHANG的评论是一样的原理,感觉更方便些。

  3. 博主对这个问题深入研究了啊,我都是转成Mobi之后再从云端下载Azw3回来,然后改DOC标签,再用Calibre推到设备里,这样就比较完美了。

  4. Calibre 转AZW3 时, 编辑元数据,语言选项选择英语,制做好的电子书就可以选取某个字词了。

    • HUNTER927 您好。Calibre 和 KindleGen 转换的 mobi 格式按说是不会影响电子书原有目录的。能具体描述下您遇到的问题吗?

  5. 实际上我发现,正版的azw3和经过推送的非正版的mobi,在calibre的编辑书籍功能里打开后,在文件列表里有三个左右的后缀为unkonw的未知文件。我估计这是取词的关键所在。