国内主流输入法几乎都被广告、弹窗、开屏、"热点资讯"和各种数据收集塞满了。 输入法是离用户最近的软件——你打的每一个字都经它的手,它本不该拿这个去喂广告。
OpenIME 的承诺:
- 🚫 永远没有广告,没有弹窗,没有"资讯推送"
- 🔒 不收集、不上传你输入的任何内容(引擎完全在本地,连网络代码都没有)
- 📖 完全开源(GPL-3.0):任何人基于它做的版本也必须开源,没人能拿去闭源套广告
- 🧩 人人可参与:词库、算法、各平台前端都欢迎 PR
已经有优秀的开源输入法如 RIME。OpenIME 想要的是更低的上手门槛: 一个干净的 Python 引擎做大脑,各平台只写薄薄一层前端,让更多人能读懂、能改、能贡献。
- ✅ 拼音切分(动态规划,支持回溯、
'分隔、ü→v) - ✅ 9.6 万词词库,按真实词频排序(来自 jieba),单字覆盖全
- ✅ 整句输入:
woshizhongguoren → 我是中国人、rengongzhineng → 人工智能(Viterbi 一元语言模型,不是简单贪心) - ✅ 命令行演示(逐键输入、实时候选、选词上屏)
- ✅ 引擎守护进程(Unix socket),原生前端可做瘦客户端接入
- ✅ Linux / Fcitx5 前端(C++,需在 Linux 上编译)
- ✅ 运行期零第三方依赖,12 项单元测试全过
不需要安装任何东西,有 Python 3 就行:
git clone https://github.com/luwinter111/OpenIME.git
cd OpenIME
python3 -m openime.cli # 逐键输入拼音,数字选词,空格选第一个试试输入 woaini、zhonghuarenmingongheguo、kaiyuanshurufa。
非交互式快速看效果:
printf 'nihao\nwoshizhongguoren\nrengongzhineng\n\n' | python3 -m openime.cli
# nihao -> 1.你好 ...
# woshizhongguoren -> 1.我是中国人 ...
# rengongzhineng -> 1.人工智能 ...openime/ 核心引擎(纯 Python,运行期零依赖)
pinyin.py 拼音音节切分
dictionary.py 词库加载 + 查询 + 整句 Viterbi 组合
engine.py 引擎 + 按键级输入状态机
cli.py 命令行演示
data/ dict.txt(生成物)、syllables.txt
server/ 引擎守护进程(Unix socket,供原生前端接入)
frontends/
fcitx5/ Linux/Fcitx5 前端(C++ 瘦客户端)
tools/
build_dict.py 用 pypinyin + jieba 生成词库(可一键复现)
tests/ 单元测试(标准库 unittest)
详见 ARCHITECTURE.md。
运行期不需要,但你想改词库或复现时:
pip install pypinyin jieba
python3 tools/build_dict.py --min-freq 10 --max-per-key 50近期重点是把"大脑"做扎实,再逐个平台铺前端。详见 ROADMAP.md。 目前最缺人的方向:词库扩充、整句模型升级(二元/三元)、各平台前端(Windows/macOS/Android/iOS/IBus)。
这是个刚起步的项目,特别欢迎新手。改一条词频、补一个测试、写一段平台前端都算数。 请看 CONTRIBUTING.md。
GPL-3.0 —— 用了 copyleft 是有意的:保证 OpenIME 及其所有衍生版本 永远自由、永远开源、永远没有广告。