# 我真的是停不下来啊\_日本語非辞書形辞典\_v2\_mdx2all

**URL:** <https://forum.freemdict.com/t/topic/18617>\
**Category:** 日语\
**Tags:** python, mdx工具, 日语词头, 教程\
**Created:** [2023 年1 月 23 日 13:49 UTC](https://forum.freemdict.com/t/topic/18617 "2023-01-23T13:49:23Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

作者： ![步天歌](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/%E6%AD%A5%E5%A4%A9%E6%AD%8C/32/29973_2.png) [@步天歌](https://forum.freemdict.com/u/%E6%AD%A5%E5%A4%A9%E6%AD%8C)\
发布日期： [2023 年1 月 23 日 13:49 UTC](https://forum.freemdict.com/t/topic/18617/1 "2023-01-23T13:49:23Z")

</div>

# 前言

《日本語非辞書形辞典》项目主要是为了提高看日语小说时的查词速度，但由于本人精力有限，一直只提供mdx格式下载。作为词典制作者和使用者（非词典软件开发者），我对这种格式很满意。

不过，我看小说时使用的词典软件们却齐刷刷地转投其他阵营：

idx：即Stardict格式的词典，多见于各大国产电子书阅读器，比如博阅系统、Kindle多看阅读系统以及真·跨平台开源阅读APP KOReader

txt：AnkiHelper（这个不支持mdx可以理解

zip：日语划词插件Yomichan支持的格式（我实在不想去折腾mdx怎么转EPWING

mobi：Kindle支持的词典格式，但如果想在Android和iOS上使用，请参考这里的[方法](https://github.com/jmdict-kindle/jmdict-kindle)，但是单词卡既没有记录上下文的功能，也没有动词活用推导功能。

kobo：日本电子书厂商，未使用过该产品。只是注意到其有专门的词典格式，估计也不支持 mdx。

前不久发现了Python 第三方库 [pyglossary](https://github.com/ilius/pyglossary) ——一个提供了多种词典快速转换工具。

 ![](https://forumcdn.freemdict.com/uploads/default/original/3X/8/7/878b92987aed400bc9c8098717523b736c40a8ef.png)

从本人的实际体验来看：mdx转idx时会处理mdx格式独有@@@跳转语法，还会将mdx的部分语法转为idx支持的语法，秒杀本人之前提出的蹩脚方案，对此，本人只能振臂高呼：Open Source Made Python Great Again！ Life is Short, you need Python:)

只需花5分钟阅读[PyGlossary：将不同格式的字典转换成 Kindle 字典](https://bookfere.com/post/883.html)（看完第一步就可以了），然后花10分钟配置好环境，再花5分钟就可以得到一本新鲜出炉的idx词典了。

如果有强迫症、有时间、有能力（懂一点点Python即可），可以接着阅读本帖，通过本人提供的转换脚本，不仅可以一键批量转换，还可以收获更完美的阅读体验。

有多完美呢？楼主在用 KOReader 测试词典时直接一口气读完了一本《古書堂》233。多说一句，KOReader 用来看日语原文书真的是个大杀器，对日语的活用处理堪比Kindle设备，而且也有Kindle设备独有的保存单词上下文功能（APP没有），还有间隔重复算法安排复习）

以下部分只谈mdx转idx的，欢迎坛友替大家踩其他格式转换的坑：

[v2 · NoHeartPen/NonJishoKei - 码云 - 开源中国 (gitee.com)](https://gitee.com/NoHeartPen/JapaneseConjugation/tree/master/v2/mdx2idx)

[NonJishoKei/v2/mdx2idx at master · NoHeartPen/NonJishoKei (github.com)](https://github.com/NoHeartPen/NonJishoKei/tree/master/v2/mdx2idx)

# 快速上手

请下载《日本語非辞書形辞典》项目`v2`文件夹下的 **所有** 文件，在`mdx2idx`文件夹，运行`add_index.py`脚本，脚本运行成功会生成一个名为`done`的txt文件。

将想转换的 mdx 词典用 getDic 等软件解压为 txt 文件，把`add_index.py`脚本生成的`done`的txt文件添加到解压后的 txt 文件中（注意 mdx 源文件的格式要求），然后打包为 mdx，再使用 PyGlossary 将重新打包的 mdx 转为 idx 即可。关于 PyGlossary 的使用方法，可以参考项目官网 [GitHub - ilius/pyglossary: A tool for converting dictionary files aka glossaries. Mainly to help use our offline glossaries in any Open Source dictionary we like on any operating system / device.](https://github.com/ilius/pyglossary) 和这篇教程 [PyGlossary：将不同格式的字典转换成 Kindle 字典](https://bookfere.com/post/883.html)

# 高级指南

## 批量转换

如果希望快速转换多本词典，请通过命令行`pip install -r requirements.txt`安装相关依赖（请在`mdx2idx`文件夹下使用这条命令）。

将所有 mdx 文件放到`mdx2idx`文件夹下，运行`main.py`脚本，等待片刻即可。

## 自定义索引

由于 idx 的跳转特性，转换好的词典可能会包含一些无法跳转的链接。如果不想在这些无意义的跳转链接中浪费时间，可以将`v2`文件夹下`index`内的`index.txt`里的内容删除，然后替换为想转换的词典的词条，再执行`main.py`。

词条导出方法：可以使用 GoldenDict，在词典详情界面右键查看词条然后导出的文本，不需要删除`たべる【食べる】`这样的词条，脚本会自动处理，也不需要包含词性。

## 多语言支持

如果将`index.txt`替换为其他按照`词形变化	原型`格式储存的数据，比如：

```auto
perceived	perceive
perceived	perceive
perceives	perceive
perceiving	perceive

```

那么，本项目提供的脚本就可以用于其他语言的 mdx 转 idx。由于精力有限，本项目暂不提供这样的数据，有需要的同学请自行尝试。

英语的词形变化数据可以参考：[Free English to Chinese Dictionary Database](https://github.com/skywind3000/ECDICT)

## 转换 mdd 文件

如果希望转换 mdd 文件，请将 mdd 文件和 mdx 一起放在`mdx2idx`文件夹下，然后运行`main.py`。

请注意：这种方式只能保证 PyGlossary 会识别并处理 mdd 文件，转换的 idx 可能存在图片显示为`[image]`的情况。

## 删除 HTML 标签

PyGlossary 不会处理不被 idx 支持的 mdx 源文件语法，有需要和有时间的同学可以参考这部分的内容，自行修改`.process`文件夹下`dics`解压出的源文件，修改完成后，请运行`pack_mdx.py`，不要运行`main.py`文件。

1. 不支持`<a class="link" href="javascript:;">(.*?)</a>`跳转语法
  1. 替换参考正则：`<a href="entry://\1">\1</a>`

2. 不支持`<img alt="" src="data:image/png;base64,(.*?)>`这样含有 base64 码的图像标签
  1. 替换参考正则：替换为空即可
  2. StarDict似乎不支持图片，可以考虑手动删除图片标签`<img (.*?)>`

3. `<span>(.*?)</span>`标签：
  1. 替换参考正则：替换为空即可
  2. PyGlossary 似乎会按照特殊的格式渲染该标签的文本  
……（欢迎补充反馈）

## 转换为其他格式

pyglossary 提供如下格式转换支持：

 ![](https://forumcdn.freemdict.com/uploads/default/original/3X/8/7/878b92987aed400bc9c8098717523b736c40a8ef.png)

有需要的同学请自行修改`convert_idx.py`的内容。

# 词典分享

最后，分享本人打磨了3天的《新世纪日汉双解大辞典》，在使用脚本转换并补充了大量词条的基础上，删除了`[image]`等不被支持的标签，还对中日文解释做了排版的分割调整，简洁清晰，适合各个阶段的日语学习者使用，也期待看到各位的作品:)

[https://cloud.freemdict.com/index.php/s/FwxqieecqHzsCee](https://cloud.freemdict.com/index.php/s/FwxqieecqHzsCee)

> **[123云盘](https://www.123pan.com/s/iGz0Vv-UodVh)**

~~有和楼主一起挑战一晚读完第五次圣杯战争的Fate厨吗233~~

---

<div class="post-metadata">

作者： ![kapas](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/k/f475e1/32.png) [@kapas](https://forum.freemdict.com/u/kapas)\
发布日期： [2023 年1 月 23 日 19:45 UTC](https://forum.freemdict.com/t/topic/18617/2 "2023-01-23T19:45:05Z")

</div>

老大，你的帖子技术含量太高。。。  
搞不懂啊。。。

新世纪日汉  
没有python哦，只能直接求个mdx了

另  
你看日文小说用啥？  
kindle？

---

<div class="post-metadata">

作者： ![步天歌](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/%E6%AD%A5%E5%A4%A9%E6%AD%8C/32/29973_2.png) [@步天歌](https://forum.freemdict.com/u/%E6%AD%A5%E5%A4%A9%E6%AD%8C)\
发布日期： [2023 年1 月 24 日 13:30 UTC](https://forum.freemdict.com/t/topic/18617/3 "2023-01-24T13:30:48Z")

</div>

这词典就是从站长制作的mdx转的呀233 [新世纪日汉双解大辞典 - FreeMdict](https://freemdict.com/2019/10/31/%e6%96%b0%e4%b8%96%e7%ba%aa%e6%97%a5%e6%b1%89%e5%8f%8c%e8%a7%a3%e5%a4%a7%e8%be%9e%e5%85%b8/)

之后这篇帖子分享的词典也都是在本论坛淘到的词典，不过我只会做自己喜欢的《大辞泉》和《スーパー大辞林》了。之所以拿这本《新世纪日汉双解大辞典》试水是考虑到受众面——大多数学日语的同学先从日汉双解类词典看起就好啦，能只靠日日词典的大佬毕竟是少数:)

Kindle我只是用来买书，看日文小说的话，我之前用的静读天下+AnkiHelper（前者看书时快速查词，后者用于复习整理到Anki），最近已经彻底倒向KOReader了，原因如下：

- 词典功能支持记录上下文
- 内置间隔重复算法复习单词
- 对日语的完美支持（这个是最重要的一点，这是我在Android上遇到的唯一一个可以长按即可自动选中日语单词的APP）
- 跨设备同步做的很好，背单词的数据也可以用Webdav同步
- 有Obsidian插件可以处理笔记 [Edo78/obsidian-koreader-sync: Obsidian.md plugin to sync highlights/notes from koreader (github.com)](https://github.com/Edo78/obsidian-koreader-sync)

---

<div class="post-metadata">

作者： ![RANP0](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/r/848f3c/32.png) [@RANP0](https://forum.freemdict.com/u/RANP0)\
发布日期： [2023 年1 月 24 日 14:34 UTC](https://forum.freemdict.com/t/topic/18617/4 "2023-01-24T14:34:08Z")

</div>

记录上下文和导出 anki 确实是很有用的功能  
读完你的长文，正跃跃欲试想去下载一个，发现只有 Android 和 Linux 用户能用，可惜

---

<div class="post-metadata">

作者： ![kapas](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/k/f475e1/32.png) [@kapas](https://forum.freemdict.com/u/kapas)\
发布日期： [2023 年1 月 24 日 16:39 UTC](https://forum.freemdict.com/t/topic/18617/5 "2023-01-24T16:39:38Z")

</div>

站长的那个一直在用  
你说： 补充了大量词条的基础上，删除了`[image]` 等不被支持的标签，还对中日文解释做了排版的分割调整，简洁清晰

这个才是重点。。。  
求个mdx~

---

<div class="post-metadata">

作者： ![RANP0](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/r/848f3c/32.png) [@RANP0](https://forum.freemdict.com/u/RANP0)\
发布日期： [2023 年1 月 24 日 16:44 UTC](https://forum.freemdict.com/t/topic/18617/6 "2023-01-24T16:44:23Z")

</div>

额，他全篇都是在讲mdx转idx，mdx根本没改啊

---

<div class="post-metadata">

作者： ![shaoshi](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/shaoshi/32/14529_2.png) [@shaoshi](https://forum.freemdict.com/u/shaoshi)\
发布日期： [2023 年1 月 24 日 21:20 UTC](https://forum.freemdict.com/t/topic/18617/7 "2023-01-24T21:20:30Z")

</div>

idx：即Stardict格式的词典

Goldendict可以读Stardict格式的词典。放到Goldendict里直接用就是了。

---

<div class="post-metadata">

作者： ![步天歌](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/%E6%AD%A5%E5%A4%A9%E6%AD%8C/32/29973_2.png) [@步天歌](https://forum.freemdict.com/u/%E6%AD%A5%E5%A4%A9%E6%AD%8C)\
发布日期： [2023 年1 月 24 日 23:41 UTC](https://forum.freemdict.com/t/topic/18617/8 "2023-01-24T23:41:11Z")

</div>

补充了大量词条：补充的词条就是《日本語非辞書形辞典》里的词条，只不过这个脚本只添加那些可以跳转到《新世纪日汉双解大辞典》的词条，不能跳转到《新世纪日汉双解大辞典》的词条不会添加——不然看个书需要来来回回地到处跳，而且跳过去后就不能同时查阅多本字典了，所以才会为每本词典单独添加跳转链接。

删除了`[image]` 等不被支持的标签：mdx的图片在idx中无法显示，我直接删了（但图片在站长制作的mdx里是正常的）

对中日文解释做了排版的分割调整：这本《新世纪日汉双解大辞典》的mdx分割中日解释使用了span标签，这个标签转为idx后失效了，中日文解释混在了一起，所以我直接换成了换行。不过这样一来原mdx中文解释有的缩进，idx就没有了。

综上，我修改的mdx没有什么特殊的地方（甚至可以说是反向优化233），用《日本語非辞書形辞典》+站长的《新世纪日汉双解大辞典》就好了呀:)

---

<div class="post-metadata">

作者： ![kapas](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/k/f475e1/32.png) [@kapas](https://forum.freemdict.com/u/kapas)\
发布日期： [2023 年1 月 25 日 06:43 UTC](https://forum.freemdict.com/t/topic/18617/9 "2023-01-25T06:43:38Z")

</div>

搞懂了  
谢谢~

期待大作~

---

<div class="post-metadata">

作者： ![hahaya](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/h/77aa72/32.png) [@hahaya](https://forum.freemdict.com/u/hahaya)\
发布日期： [2023 年1 月 26 日 17:13 UTC](https://forum.freemdict.com/t/topic/18617/10 "2023-01-26T17:13:56Z")

</div>

> [@步天歌](#):
>
> [https://cloud.freemdict.com/index.php/s/FwxqieecqHzsCee](https://cloud.freemdict.com/index.php/s/FwxqieecqHzsCee)

请问链接里分享的这些格式的词典文件能被哪种软件读取？

---

<div class="post-metadata">

作者： ![shaoshi](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/shaoshi/32/14529_2.png) [@shaoshi](https://forum.freemdict.com/u/shaoshi)\
发布日期： [2023 年1 月 27 日 00:06 UTC](https://forum.freemdict.com/t/topic/18617/11 "2023-01-27T00:06:36Z")

</div>

Stardict词库可以放在Goldendict中使用，也有专门的转换工具。

参看：

[词库种类及使用方法](https://forum.freemdict.com/t/topic/17795)

---

<div class="post-metadata">

作者： ![hahaya](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/h/77aa72/32.png) [@hahaya](https://forum.freemdict.com/u/hahaya)\
发布日期： [2023 年1 月 27 日 06:46 UTC](https://forum.freemdict.com/t/topic/18617/12 "2023-01-27T06:46:23Z")

</div>

OK 谢谢，快忘了stardict这个格式 ::

---

<div class="post-metadata">

作者： ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
发布日期： [2023 年1 月 27 日 06:50 UTC](https://forum.freemdict.com/t/topic/18617/13 "2023-01-27T06:50:09Z")

</div>

> [@步天歌](#):
>
> 这词典就是从站长制作的mdx转的呀233 [新世纪日汉双解大辞典 - FreeMdict](https://freemdict.com/2019/10/31/%e6%96%b0%e4%b8%96%e7%ba%aa%e6%97%a5%e6%b1%89%e5%8f%8c%e8%a7%a3%e5%a4%a7%e8%be%9e%e5%85%b8/)

> [@《新世纪日汉双解大辞典》补档 + 替补css](https://forum.freemdict.com/t/topic/5042):
>
> 好的资源值得重开一贴，分享给大家，同时提供替补css一份，附在最后。 感谢freecomic101等无私奉献者，感谢论坛这个优质的平台，祝各位新年快乐，万事顺心！ 5.0版和5.0.1版区别： 1 词条数：28w+、41w+ 2 编辑日期：20200727、20200731 3 其他大修类项目参照[原帖](https://forum.freemdict.com/t/topic/1279/393)[xinshijirihan\_v0.501.zip](https://forum.freemdict.com/uploads/short-url/slxRJtR46V3ZEfg57axM5kAeMMq.zip) (29.8 MB) pw: f…

个人建议freecomic101修订过错误的版本

---

<div class="post-metadata">

作者： ![13879885572](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/1/dfb087/32.png) [@13879885572](https://forum.freemdict.com/u/13879885572)\
发布日期： [2023 年5 月 9 日 16:48 UTC](https://forum.freemdict.com/t/topic/18617/14 "2023-05-09T16:48:38Z")

</div>

您好，有些词条加载不全。比如“世話”，在koreader中只显示了两条释义，可它一共有五条释义外加五个联想词。该怎么办呢？

---

<div class="post-metadata">

作者： ![步天歌](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/%E6%AD%A5%E5%A4%A9%E6%AD%8C/32/29973_2.png) [@步天歌](https://forum.freemdict.com/u/%E6%AD%A5%E5%A4%A9%E6%AD%8C)\
发布日期： [2023 年5 月 12 日 09:34 UTC](https://forum.freemdict.com/t/topic/18617/15 "2023-05-12T09:34:06Z")

</div>

好问题，现在才发现这个词典对于【词组】的采用了这种方式来处理，读了下源代码，发现处理起来有点棘手，我试试吧:)
