Skip to content

About

百度输入法 .bin 一键迁移到微信输入法个人词典

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

Baidu2WeType

将 百度输入法 Windows 版导出的 .bin 用户词库,备份并迁移到 微信输入法(WeType)Windows 版个人词典。

Build Windows EXE

这个项目解决什么问题?

微信输入法目前可以同步自己的个人词典,但 Windows 客户端没有提供“导入其他输入法用户词库”的公开入口。对于长期使用百度输入法、已经积累了数万条人名、专业术语、英文缩写和个人高频词的用户,直接换输入法意味着重新“养词库”。

Baidu2WeType 的目标就是把这部分属于用户自己的输入历史资产迁过去。

项目流程:

百度输入法导出的 .bin
        ↓
解析:词语 / 拼音 / 使用次数 / 最后使用时间
        ↓
转换为 WeType v5 用户词典 LevelDB 记录
        ↓
完整备份微信输入法数据
        ↓
离线构造 + CRC / WriteBatch / 回读校验
        ↓
原子替换 WAL
        ↓
重新打开微信输入法
        ↓
原百度用户词直接进入正常候选栏

已实现功能

  • ✅ 解析百度输入法 Windows 用户词库导出 .bin
  • ✅ 支持中文用户词
  • ✅ 支持英文用户词与大小写保留
  • ✅ 保留百度词条的使用次数、最后使用时间
  • ✅ 同拼音多词条不会简单互相覆盖
  • ✅ 自动检测微信输入法 Windows DictDir2\v5 活动数据库
  • ✅ 自动检测并阻止“微信输入法仍在运行时写入”
  • ✅ 完整备份 AppData\LocalLow\TENCENT\WeType
  • ✅ 完整备份 AppData\Roaming\TENCENT\WeType
  • ✅ 逐文件 SHA-256 验证备份
  • ✅ 离线生成 WeType LevelDB WAL
  • ✅ LevelDB CRC32C 校验
  • ✅ WriteBatch 结构校验
  • ✅ 目标 Key/Value 全量回读校验
  • ✅ 临时文件 + os.replace 原子替换
  • ✅ 迁移失败自动回滚
  • ✅ 一键恢复完整备份
  • ✅ GUI 内置词库浏览、拼音搜索与 CSV 导出
  • ✅ CLI 模式
  • ✅ GitHub Actions 自动构建单文件 Windows EXE

真实迁移实测

2026-08-20 在 Windows 11 + 微信输入法 Windows 2.1.x 环境进行了完整实机验证。

一份真实百度输入法用户词库:

项目 实测结果
百度 .bin 文件大小 约 4.66 MB
总用户词 43,672
中文用户词 42,167
英文用户词 1,505
百度词库解码失败 0
唯一中文拼音键 39,495
同拼音多候选组 1,653
单一拼音最多候选 24
生成 WeType 唯一 Key 128,242
LevelDB bad batch 0
目标 Key missing 0
目标 Value mismatch 0

迁移完成后,抽取原百度词库中的冷门三字人名进行实机验证:输入完整拼音后,微信输入法正常候选栏能够直接给出对应完整姓名,验证通过。

一个容易误解的地方:为什么“常用语”里看不到迁移的 4 万多词?

这是正常现象,不是迁移失败。

微信输入法本地实际上把下面两类数据分开保存:

DictDir2\user_hot_word
    → “常用语”面板

DictDir2\v5
    → 个人词典 / 正常输入候选词库

因此,迁移后的百度用户词会进入正常拼音候选,不会被塞进“常用语”列表。

微信输入法官方隐私政策也分别描述了“个人词典”和“常用语”的存储、删除与同步方式:

为了方便确认自己到底迁入了哪些内容,本工具提供了**“词库查看”标签页**,可以搜索词语/拼音并导出 CSV。

使用方法

从源码运行

需要 Python 3.10+,运行时无第三方依赖:

python Baidu2WeType.pyw

或直接双击:

启动工具.cmd

在百度输入法中导出用户词库 .bin。

打开工具,选择百度 .bin。

点击 分析词库,先确认条目数量正常。

从系统托盘彻底退出微信输入法。

点击 备份并迁移。

等待工具显示“实时回读校验 PASS”。

手动重新打开或切换到微信输入法。 测试几个原百度词库中的冷门人名/专业词。

工具不会自动强杀微信输入法,也不会重启 Windows。

CLI

检查环境:

python Baidu2WeType_cli.py check-env

分析百度词库:

python Baidu2WeType_cli.py analyze "D:\Downloads\百度输入法词库导出.bin"

只生成离线副本,不修改 AppData:

python Baidu2WeType_cli.py build-copy "D:\Downloads\百度输入法词库导出.bin" --out-dir "D:\WeTypeTest"

完整备份并迁移:

python Baidu2WeType_cli.py migrate "D:\Downloads\百度输入法词库导出.bin"

恢复备份:

python Baidu2WeType_cli.py restore "D:\Backups\WeType_Backup_Before_Baidu_Import_20260820_141355"

安全设计

这个项目默认把“能恢复”放在“能写入”前面。

实时迁移顺序固定为:

  1. 检查所有 wetype_* 进程是否退出;
  2. 完整复制 LocalLow WeType;
  3. 完整复制 Roaming WeType;
  4. 对备份逐文件计算并对比 SHA-256;
  5. 备份原始百度 .bin;
  6. 在工作目录离线生成新的 WAL;
  7. 验证 LevelDB CRC32C;
  8. 验证 WriteBatch;
  9. 将全部目标 Key/Value 回放到最终状态检查 missing/mismatch;
  10. 再次确认微信输入法没有重新启动;
  11. 写入临时 WAL;
  12. 校验临时 WAL SHA-256;
  13. 使用原子替换替换活动 WAL;
  14. 对真实 WAL 再做一次全量回读;
  15. 任一步失败则从备份恢复原 WAL。

完整备份默认位于:

%USERPROFILE%\Documents\Baidu2WeType\Backups\

技术原理(简述)

微信输入法 Windows 版个人词典的 DictDir2\v5 使用 LevelDB 风格存储。

实测涉及的主要用户词键包括:

!v2u!<pinyin>
!u_d_v_p!<pinyin>\x01<word>
!user_prefix2!<word>

!en_fe!<lowercase english>
!env2!<lowercase english>

Value 使用固定结构,主体字节存在 +6 偏移编码,尾部包含长度与:

5A A5 5A A5

更详细说明见:docs/技术说明.md。

同拼音多个词怎么办?

百度用户词库中会出现多个词拥有完全相同的拼音。

本工具的策略是:

  • 每个 词 + 拼音 都写入 !u_d_v_p!;
  • 每个词都写入 !user_prefix2!;
  • !v2u!<pinyin> 主映射按:
    1. 百度使用次数更高;
    2. 最后使用时间更新;
    3. 稳定字符串排序; 选出主候选。

不会依赖“最后写进去的词碰巧覆盖前面的词”。

关于词频

目前已经确认:

  • 百度 .bin 中可提取使用次数;
  • 百度 .bin 中可提取最后使用时间;
  • 最后使用时间可以写入已经验证的微信输入法时间字段;
  • 同拼音主候选可据百度使用次数与最近使用时间选择。

目前没有在未验证的字段里伪造微信输入法内部学习分数。这样优先保证词条正确进入候选,而不是猜测一个可能错误的词频公式。

兼容性

已实测:

  • Windows 11
  • 微信输入法 Windows 2.1.x(2026-08-20)
  • 百度输入法 Windows 用户词库导出 .bin

微信输入法属于持续更新的软件。未来如果腾讯修改本地词典格式,本工具可能需要适配更新。

每次迁移都请保留自动生成的完整备份。

构建 Windows EXE

本地构建:

.\scripts\build_windows.ps1

输出:

Baidu2WeType_Windows_x64.zip

仓库也已配置 GitHub Actions:推送到 main 后会自动测试和构建 Windows EXE;推送 v* Tag 时会自动创建 Release。

一键发布到自己的 GitHub

项目已经准备好发布脚本。

Windows 下直接双击:

发布到GitHub.cmd

脚本会检查 Git / GitHub CLI,必要时可通过 winget 安装,然后完成登录、建仓库、首次 commit 和 push。

详细说明:docs/一键发布到GitHub.md

开源许可与致谢

本项目使用 GPL-3.0。

百度 .bin 解码算法实现参考了开源项目:

见:THIRD_PARTY_NOTICES.md。

免责声明

  • 本项目与百度、腾讯、微信、微信输入法均无官方关联。
  • 仅面向用户本人设备上的个人词库备份、互操作和迁移。
  • 不访问、攻击或修改任何远程服务器。
  • 不绕过账号认证,不处理账号凭证。
  • 本地数据格式属于非公开实现,软件更新后可能发生变化。
  • 请务必保留迁移前自动生成的完整备份。

About

百度输入法 .bin 一键迁移到微信输入法个人词典

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages