图片词典的制作规范与开源工具

图片词典的制作规范与开源工具

背景

时常遇到好资料,怎奈只有PDF扫描版,辛苦制作好词条,但成品的导航却不够理想,梳理
一下现有获知的工具,提出图片词典应有的标准,希望各路高手能够借鉴打造理想的工
具,造福广大词典爱好者。

现有图片词典制作技术点评

* 图像版mdict字典制作方法 by tsiank
    - src: https://www.pdawiki.com/forum/thread-13451-1-1.html
    - 这是最优秀的原创教程了,入门必修
    - 优点:理解图片词典的基本原理
    - 问题:导航简陋,难以在页面中定位具体词条
* 图片版mdx源文件生成工具 by tsiank
    - src: https://www.pdawiki.com/forum/thread-33574-1-1.html
    - 这是上述教程的升级版,带工具了!
    - 优点:导航体验大大提升;技术门槛极低,小白都可以使用
    - 问题1:不能自动处理多部分构成的书籍,目前主要处理正文部分
    - 问题2:生成的mdx源文件有很多细节问题需要进一步处理,如CSS缺文件名、多
      个标签属性之间缺空格、nobomb格式等
    - 问题3:鉴于使用Excel,无法与其他工具链结合,从修订原始词条文件到生成
      mdx源文件无法一步到位
    - 问题4:导航依然有改进空间,VBA不熟悉,改造困难
* 以Picture Capture为代表的切图版词典制作软件 by chigre3 等
    - src: https://www.pdawiki.com/forum/thread-19040-1-1.html
    - 这是对终端词典用户体验最好的工具
    - 优点:直接定位到具体词条、导航丰富
    - 缺点1:工具非开源、偶尔开放下载、遇到问题没有反馈处理机制
    - 缺点2:对于普通词典制作者来说极其复杂、体验糟糕
* 使用CSS精确定位Visual词典 by 孤影 等
    - src: https://www.pdawiki.com/forum/thread-20350-1-1.html
    - 对于Visual Dictionary词典用户来说,体验很不错
    - 优点:关键词加亮、可直接在图片上点击关键词链接
    - 缺点:具体技术细节不开放,仅可观摩案例Chinese-English Bilingual
      Visual Dictionary (https://www.pdawiki.com/forum/thread-35929-1-1.html ),
      大致是先OCR图片,并通过类似Picture Capture工具切片获取每个关键词的相
      对定位,最后使用CSS隐藏文字层并定位关键词,太复杂了

优秀的图片词典工具链标准

* 词典成品的导航体验要足够好:核心是有助于快速定位具体词条位置
* 词典要能够适应不同尺寸的屏幕:阅读体验好,字体太大或太小都不可取
* 图片处理要足够简单:使用扫描的整页图片即可,不要切片等复杂操作
* 词条的录入、校对要足够简单:要一目了然,不容易出错,技术门槛降至最低
* 词典修订要快捷:修订原始词头文件后,通过工具可一步到位生成最终的mdx源文件

为了实现上述目标,拟根据自己制作十来个图片词典的实践经验,提出如下制作规范,大
家可将其看作是开发相应图片制作工具的用户需求文档。

成品图片词典的导航构想

* 在页面顶部显示Pages导航 和 Keywords导航(或有)
    - Pages:Previous Next Cover Preface Content Index etc.
    - Keywords:A B C D E F G
* 在页面底部显示Pages导航
    - Pages:Previous Next Cover Preface Content Index etc.

* 在Pages导航中:
    - 上下页,可自动处理first和last页面
    - 上下页,可自动处理多个部分的页码体系为一个连续整体,如:
        - 正文前123(封面、目录等)、正文123、正文后123(索引、封底等)
    - 除了上下页外,可自定义添加封面、前言、目录、索引等固定链接。
* 在Keywords导航中:
    - 若没有关键词,则不显示Keywords导航,适配封面、前言、目录、索引等页面
    - 若某个关键词作为mdx的keywords,即使用Keywords导航中的某个关键词进行查
      询,则在Keywords导航中加亮该关键词。
    - 若页面作为mdx的keywords,即使用Pages导航中的页码等进行查询,则在
      Keywords导航中的关键词不做加亮处理。

源文件格式规范

* 图片文件命名格式:
    - 根据页码编排需要,可将书籍分为多个部分,如:正文前123(封面、目录
      等)、正文 123、正文后123(索引、封底等)
    - 对于不同部分的图片,相应文件名命名规范为“前缀名+页码+后缀名”:
        - 前导名可自定义,中英文均可,建议采用书籍英文名或拼音缩写等个性化
          名称,避免多词典之间命名冲突
        - 页码位数可自定义,默认4位,可根据需要设为3位或5位等
        - 需要正确识别图片后缀名,如jpg、png等
        - 图片文件名案例:某书前0001.jpg…某书正文0001.jpg…某书后0001.jpg

* Keywords源文件格式:
    - 对应书籍的多个部分,将keywords源文件分为多个部分,如:正文前123.txt(封
      面、目录等)、正文123.txt、正文后123.txt(索引、封底等)
    - 具体内容格式(极大化方便用户输入词头、校对和修订):
        * 第1行页码:0001
        * 第2行关键词:A
        * 第3行关键词:B
        * 第n行关键词:N
        * 第n+1行页码:0002
        * 第n+2行关键词:X
        * 第n+3行关键词:Y
        * 第n+4行关键词:Z
        * ……
    - 页码之后,可以没有关键词
        - 若有关键词,则同时生成相应的Pages导航和Keywords导航
        - 若没有关键词,则仅生成Pages导航,而没有Keywords导航

处理程序及配置文件规范

* 建议使用Python3,毕竟用户多,大家有能力按需改造
* 程序作适当配置后,应可一键生成最终的mdx源文件和css
* 主要配置包括:
    - 书籍多个部分对应的Keywords源文件和图片文件
        - Keywords源文件名称
        - 对应的图片文件名:前缀名 + 页码位数 + 后缀名
    - Pages导航中的自定义固定链接:
        - 固定链接名称(如封面目录) + 对应图片文件名
    - mdx目标文件名
    - CSS文件名
    - 导航的中英文
        - 简中:页面、上一页、下一页、关键词
        - 繁中:頁面、上一頁、下一頁、關鍵詞
        - 英文:Pages、Previous、Next、Keywords

目标文件格式规范

* mdx源文件txt需要满足mdx源文件的格式标准:dos,nobomb,UTF-8
* 生成的CSS可进一步配置:
    - Pages导航样式
    - Keywords导航样式
    - 加亮Keyword样式
    - 图片宽度:百分比(默认100%)或固定大小(px或em)

扩展1:整页版和多栏切片版二合一

为适应手机等移动设备的查阅,需要将整页版适度分栏切片

* 词条需要分栏处理
* 图片文件名需要分栏处理
* CSS要能够自适应不同屏幕尺寸的设备

具体改造略

扩展2:多层次词头优化

为优化类似Longman Language Activator、朗文多功能分类词典、现代汉语词典等词头有
多个层次的词典,可在原有标准基础上,进一步将Keywords区分为多个层次,如字、词:

* 在页面顶部显示Pages导航 和 字词导航(或有)
    - 页面:Previous Next Cover Preface Content Index etc.
    - 字:A B C D E F G
    - 词: WordA1 WordA2 WordA3 WordA4
* 在页面底部显示Pages导航
    - 页面:Previous Next Cover Preface Content Index etc.

* 当查询页码(并未查询具体的字或词)时,仅显示页列表
* 当查询某个字或某个词时,不仅显示字列表,还显示这个字所包含的词列表

具体改造略

诚邀Python等高人打造开源的图片词典制作工具

若能够制作符合上述标准的工具(先有标准版的即可,扩展版再逐步优化),必将造福广
大词典爱好者,无论是字典制作者,还是字典使用者。

若有需要,我可提供相关案例词典:包括完整的图片、词条等。

8 Likes

谢谢归纳分享经验。

对于大部头来说,制作成mdx可检索后,其利用率比PDF扫描版甚至于纸质版一下子提升不少。因此探讨图片词典制作是很有意义的。

由于ocr大部头词典实在是一件吃力不讨好的事,尤其是古汉语字典,校对太累人而且让人不放心。如果没有官方文本的话,其实制作成图片版质量更为可靠,实在是方便又实惠。

图片词典制作工作量最大的是切图到词条的版本,也是难点所在,希望有更为便利的制作方法。切图版退而求其次的,是关键词加亮的图片词典,图片中的文本如何ocr分层检索,值得进一步探讨,因为这个用来制作英汉双解的visual词典确实方便找到关键词在图片上的位置。

1 Like

tsiank 的VBA代码逻辑很清楚,稍微借鉴改造为Python脚本,即可实现基础版本了。

新时代英汉大词典那个帖子应该是楼主的帖子吧,两栏的词典我这试了试,可以弄成整页和单栏共用一套图,不用再弄整页和单栏两个版本了,就一套单栏的切图,切完单栏用css控制下就可以实现。

ComicEnhancerPro完全可以替代scantailor,刚会用这俩个小软件,ComicEnhancerPro真的很好用。

乔和尚的 clip-path 未来可一试~

tessdata.rar (19.2 MB)

要是能做成ComicEnhancerPro使用体验的那样软件就好多了。每页校对完直接一键生成每页的txt(直接可以转mdx那种,然后再合并txt那就简单多了,对应的切图也直接生成。
说实话他那软件设置分辨率我都没弄明白,每次都调显示器分辨率 :joy:
刚拿到他的软件时也试着用了下,可在过程中不会不懂得太多了。还有个很重要的前提,能有好的扫描文件太不好得到了,尤其是自己喜欢的。

楼主制作的朗文英语写作活用词典图片mdx还有更新吗?主要是索引方面。
这个无论是文本版还是图片版,索引和跳转方面还有提升的空间。
在解决有无问题后,如何进一步优化mdx的索引和跳转就成了提高利用便利的关键。

朗文英语写作活用词典 ,我是 双解文字版 + 双解图片版 结合使用:主力是文字版,对不确定的内容用图片版。

其中图片版,我是买的高清版,卖方扩充了无数个词条,但感觉不太好用,因此坚持使用最基本的词条,没有做什么特别处理。

1 Like

谢谢分享使用经验。
索引也许不好做,但我觉得至少在跳转方面,chigre3制作的图片mdx确实很好用:
每个查询结果都有很多跳转链接,如“目录 | 前言 | 原文序 | 类目表 | 如何使用本词典“等等,可以随时回到目录或者按主题排列的“类目表“,相当于词条的聚合页,从那里又能跳转到感兴趣的其他相关词条。这些跳转链接把整本书有机的结合了起来,使得查询mdx的体验更像是在翻纸质书,而且电子版还有翻检迅捷的好处。所以chigre3的这种做法值得学习。
目前 朗文英语写作活用词典无论是文本版还是图片版mdx,使用中总感觉各个词条是分割开的,就是因为缺失词条的聚合页或者说分类目录,难以“从某个查询结果词条—如果没有其他相关词条的跳转链接但至少可以回到分类目录—查看感兴趣的相关词条“。当然绝大多数mdx都有这个问题,只是对于按主题分类的词典来说,这种分割感更明显一些。

这本书是港版的简化汉字版,而港版是培生教育出版亚洲有限公司基于2002年英文第二版翻译的。这本好书确实值得多用多看。再次谢谢楼主制作分享的图片版mdx,方便了大家。

1 Like

“图片版mdx源文件生成工具 by tsiank”的问题补充:

1、页码不连续,或连续页码但某页面的keyword为空,其生成的源文件是无法编译为mdx,需要将源文件中keyword为空的词条删除。

2、若图片文件名的前缀和页码数字之间没有下划线等作为分隔,将无法正确提取css文件名,从而需要在输出的源文件中进一步修订。

3、若keyword中包含有反斜杠\,则excel无法生成源文件。

以下是我用vim写的vimscript,对excel生成的源文件进行修订,这样就可以解决上述1-2的问题,从而在加入封面、扉页、序言、目录、附录、封底等内容时可以无所顾忌。须根据具体情况灵活应用:若没有css文件名,则在css那一行加上文件名;若图片文件名为jpg,则将png更改为jpg,如此等等。

" 修正mdx文件格式
echo "开始修正mdx文件格式……"
set ff=dos
set nobomb
set fileencoding=UTF-8
echo "已修正mdx文件格式"

" 修正语法格式
echo "开始修正语法格式……"
silent! %s/stylesheet"type/stylesheet" type/ge
silent! %s/\.css"/\.css" /ge
silent! %s/\(goto.\{-}\)\(href\)/\1 \2/ge
silent! %s/img class.\{-}png"/\0 \//ge
silent! %s/<pagetitle><\/pagetitle>//ge
echo "已修正语法格式"

" 清除没有词条页面产生的错误空词条
echo "开始清除错误的空词条……"
silent! %s/^$\n.*\n<\/>//ge
silent! g/^$/d
echo "已清除错误的空词条"

w
1 Like

对于前言、正文、附录多套页码系统的处理

目前,可用tsiank的excel工具分别处理前言、正文和附录,然后再Merge到一起。
理想状态则可以更加方便地个性化定制:

导航系统可以这样改造(不同部分有不同的页码,切换起来像动画):

  • 封面 1…9 10 /11/ 12 13…88 正文 附录
  • 封面 正文 1…9 10 /11/ 12 13…1700 附录
  • 封面 正文 附录 1…9 10 /11/ 12 13…39

或者这样(不同的内容展示在不同地方,代码更好处理,更加容易定制):

  • Pages:1…9 10 /11/ 12 13…88
  • Keywords:A B C D E F G
    正文内容
  • Cover Preface Content Index etc.
  • Pages:1…9 10 /11/ 12 13…88
1 Like

先完成一个基本框架,适用于封面、扉页、前言、目录、附录、封底之类的情形,可以说是正文的简化版:

  • input: 页码 + 词条
  • 处理程序:配置相关参数,一键完成转换
  • output:可以直接被mdxbuilder使用的mdx源文件

1 Like

目前两套导航兼容在一个词典里,未来可以进一步统一:

已完成雏形,效果预览如下。

程序特点:

  1. 从标准的词条可以一键输出mdx源文件
  2. 对词条格式的兼容性强:页码可以跳跃(比如不想要某些页面),页码可以没有词条(比如某些词条跨了好几页,关键词只要一个即可,页码却都需要保留),页码可以乱序排列,页码可以重复。。。
  3. 在一个词典中兼容多个导航系统:封面、前言、正文、附录,各有各的页面导航
  4. 可以自定义导航内容,如:封面、版权、凡例、正文、附录、封底。
  5. 使用Vimscript编写,从此,词条文件编辑、转换都只要在vim中即可完成。

样式特点

  1. 正文导航系统中有keywords导航,一个页面的多个多音字等会同时加亮显示
  2. 页面导航的CSS定义可以很细致:区分首页、前两页、前一页、当前页、后一页、后两页、末页,案例中,实现了当前页逐渐向两边缩小的dock效果。
  3. 页面导航在top和bottom可以设置不同的样式,便于多个词典区分浏览。

1 Like

现在可以完全不用tsiank的excel工具了

功能强大!
后面建议主要围绕自己的需求进行功能增强。
比如,要对mdx的词头校对修改,可否基于其解开的原txt文本(可考虑一个词条一个txt、编译mdx再合并),以修改词头或增加链接;
比如,目前还是整页的图片mdx制作,有无制作切词mdx的兴趣。

目前已能够满足基本需求:让新人也可以简单地制作出质量还算满意的图片词典,同时词典使用者也可以在前人发布的成果基础上进一步优化改进或个性化处理。

我计划自己先用它制作几个词典,优化后发布,大家可在此基础上灵活改造。

关于修订词条:1、若有原始的词条文件,那么修订就特别简单,只要修订后重新用这个程序输出即可。2、若无原始的词条文件,可以将mdx源文件反编译重新生成词条文件(至少现有的版本反编译是可能和容易的),然后修订并重新输出即可。

切词mdx:一方面超出我的技术能力了;另一方面好像无法反编译,不利于词典资源的再次改造利用。

1 Like

其实就是引入在整页图片上划线、一次性切割成小图、自动编号命名的GUI操作功能。这个往往是在已有整页版mdx的情况下的进一步制作,不需要反编译
这个要看个人兴趣和时间。
一步一步来,当前这样已经足够强大,发布出来已经是大功一件了。

Vim师可以考虑开一个GitHub页面来发布

1 Like