开源免费的输入法词库转换工具:imewlconverter 跨平台词库迁移完整指南
【免费下载链接】imewlconverter”深蓝词库转换“ 一款开源免费的输入法词库转换程序项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter
不同输入法之间的词库格式互不通用:搜狗是.scel和.bin,百度是.bdict和.bcd,Rime 用 yaml,Gboard 用二进制 dict,微软拼音又有自己的一套私有格式。换系统、换设备或换输入法时,多年的积累往往卡在"格式不兼容"这一步。深蓝词库转换(imewlconverter)是一款开源免费、跨平台的输入法词库转换工具,支持 50 余种输入法词库格式的解析与生成,覆盖拼音、五笔、郑码、仓颉、注音等 6 种以上编码方案,可在 Windows、Linux、macOS 上运行。
这个词库转换工具适合哪些人
如果你属于以下情况之一,可以优先考虑用它做一次迁移:
- 跨平台用户:在 Windows 上用微软拼音或搜狗,在 macOS 上用 Rime 或系统自带拼音,在手机用 Gboard 或百度手机拼音,需要在几套格式之间来回转。
- 多输入法用户:同时使用拼音和五笔、郑码等编码,想把拼音词库转成五笔码表再导出,或反过来。
- 需要整理专业词库的用户:手头有多个来源的词库文件(scel、qpyd、bdict、rime 等),想统一转成自己输入法的格式,顺便按长度、词频过滤一遍。
图形界面版适合偶发操作,命令行版适合批量和脚本化,两者共用同一套转换内核,转换逻辑一致。
搜狗词库转 Rime 步骤:从构建到首次转换
准备词库文件和构建工具
先把要转换的源文件放到一个固定目录,并备份一份原文件——转换失败时可以直接重来。
命令行工具基于 .NET 10,构建前可以用dotnet --version确认已安装 .NET SDK 10.0+。构建命令如下:
git clone https://gitcode.com/gh_mirrors/im/imewlconverter cd imewlconverter make build-cmdmake build-cmd是项目 Makefile 提供的构建入口,等价于dotnet build src/ImeWlConverterCmd,产物在src/ImeWlConverterCmd/bin/Debug/net10.0/ImeWlConverterCmd.dll。想出 Release 版本可以DOTNET_CONFIG=Release make build-cmd。
执行转换并检查结果
以搜狗.scel细胞词库转 Rime 为例:
dotnet src/ImeWlConverterCmd/bin/Debug/net10.0/ImeWlConverterCmd.dll \ -i scel -o rime -O output.yaml ./my_dict.scel参数含义:-i scel指定输入格式代码,-o rime指定输出格式代码,-O output.yaml是输出文件路径,最后一个位置参数是输入文件。转完后打开output.yaml,确认词条数量和内容是否符合预期。
如果记不住格式代码,可以随时执行--list-formats查看当前版本支持的完整列表,--help查看完整帮助。
Windows 用户还有一个入口:图形界面程序深蓝词库转换.exe支持双模式,不带参数双击打开图形界面,带参数则按命令行运行(如深蓝词库转换.exe -i scel -o qqpy -O output.txt input.scel)。注意它是窗口子系统程序,不支持输出重定向和管道,写脚本时请改用ImeWlConverterCmd。
支持哪些词库格式和编码方案
项目支持 50 余种格式,以下是最常用的格式代码速查(完整列表以--list-formats输出为准):
| 格式代码 | 说明 | 文件扩展名 | 导入 | 导出 |
|---|---|---|---|---|
scel | 搜狗拼音细胞词库 | .scel | ✅ | ✅ |
sgpy/sgpybin | 搜狗拼音文本 / 备份词库 | .txt / .bin | ✅ | ✅ |
qqpy/qpyd/qcel | QQ 拼音文本 / 分类词库 / 细胞词库 | .txt / .qpyd / .qcel | ✅ | ✅ / ❌ / ❌ |
ggpy | 谷歌拼音 | .txt | ✅ | ✅ |
bdpy/bdict | 百度拼音文本 / 二进制 | .txt / .bdict | ✅ | ✅ / ❌ |
rime | Rime 输入法(中州韵、小狼毫、鼠须管) | .yaml | ✅ | ✅ |
plist | macOS 系统拼音 | .plist | ✅ | ✅ |
gboardbin | Gboard user_dict_3_3 | .dict | ✅ | ✅ |
libimetxt/libimebin | Fcitx5 / libime 文本 / 二进制 | .txt / .dict | ✅ | ✅ |
self | 自定义格式 | .txt | ✅ | ✅ |
PC 端还支持 Win10 微软拼音/五笔、百度手机拼音(bcd)、Gboard、搜狗五笔、极点五笔/郑码、灵格斯 ld2、拼音加加、青简(TSV 和.qj)、手心、新浪拼音、雅虎奇摩(注音)、紫光拼音(含.uwl)、FIT、libpinyin 等;手机端支持 QQ 手机拼音、百度手机、谷歌拼音。
编码方案方面支持:拼音(全拼、双拼)、五笔(86、98、新世纪)、郑码、仓颉、二笔(超强二笔、青松二笔等)、注音和自定义编码。需要导出非拼音码表时用-t指定编码类型(如-t wubi、-t zhengma),自定义编码用-c指定映射表文件(Tab 分隔的"汉字\t编码"),多字编码规则用-m指定。
词库过滤参数怎么填
过滤条件通过-f传入,多个条件用|连接:
dotnet ImeWlConverterCmd.dll -i scel -o ggpy -O output.txt \ -f "len:2-6|rm:eng|rm:num" ./tech_dict.scel可用的条件:
| 条件 | 含义 |
|---|---|
len:min-max | 只保留字数在区间内的词条,如len:2-6 |
rank:min-max | 只保留词频在区间内的词条,如rank:100-10000 |
rm:eng | 移除包含英文的词条 |
rm:num | 移除包含数字的词条 |
rm:space | 移除包含空格的词条 |
rm:pun | 移除包含标点的词条 |
写法有误时程序会直接报invalid-filter错误并说明支持哪些条件,不会静默忽略。
另外两个常用选项:
-F(自定义格式):配合self格式控制字段顺序与分隔符,例如-F "213 ,nyyy"表示输出"词语、拼音、词频"三段式文本,其中 3 位数字是字段顺序(1=拼音、2=词语、3=词频),后面是拼音分隔符和字段分隔符。-r(词频生成):-r 100会把所有词条词频统一写成 100;-r llm则调用 LLM 接口为没有词频的词条生成词频,需配合--llm-key或环境变量IMEWL_LLM_KEY。旧版的-r:baidu/-r:google在线词频已移除,传入其他值会报invalid-rank。
批量转换和大文件怎么处理
命令行支持三种批量方式,输入文件都是位置参数:
# 多个文件合并输出到一个文件 dotnet ImeWlConverterCmd.dll -i scel -o ggpy -O merged.txt dict1.scel dict2.scel dict3.scel # 通配符 + 输出目录(目录路径以 / 结尾),每个输入生成一个输出 dotnet ImeWlConverterCmd.dll -i scel -o ggpy -O ./output/ *.scel图形界面版还支持直接把文件夹作为源,文件夹内的词库文件会被逐一转换。批量转换时建议先在一两个小文件上验证格式代码和过滤参数正确,再扩大到整批。
处理大文件的几点经验:
- 转换前检查源文件是否包含明显无效内容,能提前过滤就先加
-f条件,减少导出量。 - 3.4 版本已修复过大文件内存溢出问题,但超大词库仍建议分批处理(按文件夹或通配符分组),而不是一次拖入全部。
- 需要脚本化时加
--json,输出机器可读的 JSON,其中包含imported、exported、filtered计数,方便程序判断结果;--verbose可在 JSON 模式下同时显示进度。
转换失败、乱码或参数报错怎么排查
程序提供了稳定的退出码契约,先看退出码再决定排查方向:
| 退出码 | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 用法/参数错误:格式代码不存在、-f或-F语法错误等 |
| 2 | 输入错误:文件不存在、不可读或转换失败 |
| 3 | 部分失败:批量中有的文件成功、有的失败 |
| 4 | 未捕获的内部错误(设置IMEWL_DEBUG=1可输出堆栈) |
按现象排查:
- 命令报"未知的输入格式"或提示旧参数格式:3.0 版本起参数改为 GNU 风格,
-i:scel这类冒号写法已不支持,正确写法是-i scel。旧脚本的完整对照见 docs/MIGRATION.md,按对照表把参数改一遍即可。 - 输出乱码:多数情况是源文件本身编码异常(GBK、UTF-8 无 BOM 等)。项目依赖了字符编码自动检测库(UTF.Unknown),导入时会尝试自动识别;如果识别结果仍不对,用文本编辑器以指定编码重新确认源文件内容,再重新转换。转换前建议先备份原文件。
- 结果词条数明显偏少:通常是过滤条件过于严格,先去掉
-f跑一次对比数量,再逐个加回条件定位是哪一条过滤掉了目标词条。 - 想确认转换本身是否正确:可以运行项目自带的集成测试套件
tests/integration/run-tests.sh --all,它用真实词库样本对多组"导入→导出"路径做黑盒比对,测试数据在 src/ImeWlConverterCoreTest/Test/。
项目中还有哪些文档和源码值得继续看
按使用目的找,可以直接看这些地方:
- docs/MIGRATION.md:旧版命令行参数到新版的完整对照表,包括退出码和
--json输出契约。 - docs/docker.md:Docker 运行方式。注意其中镜像基于 .NET Core 3.1,官方标注当前未维护,容器化需自行基于 .NET 10 镜像构建。
- docs/MACOS_APP_GUIDE.md:macOS
.app应用包的打包与安装方法(make app-mac)。 - CHANGELOG.md:各版本新增格式与修复记录,可用来确认目标格式在哪个版本加入。
- src/ImeWlConverter.Formats/:每种输入格式的解析和生成实现,一个目录对应一种格式,排查某格式解析问题时可以直接定位。
- src/ImeWlConverter.Core/CodeGeneration/Generators/:拼音、五笔、郑码、仓颉、二笔等编码生成器;src/ImeWlConverter.Core/Filters/ 是词条过滤器的实现。
- tests/integration/README.md 与 tests/integration/TEST-MATRIX.md:集成测试框架说明和完整测试矩阵,覆盖了 CLI 黑盒测试和 Windows GUI 矩阵测试。
【免费下载链接】imewlconverter”深蓝词库转换“ 一款开源免费的输入法词库转换程序项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考