OpenCC

GitHub

Library for conversion between Traditional and Simplified Chinese

AI Prompts & Endpoints
Agent Skills View CodeWiki Knowledge Base

Repository: BYVoid/OpenCC


Stars: 9613

CLAUDE.md

@AGENTS.md


README.md

Open Chinese Convert 開放中文轉換

![CMake](https://github.com/BYVoid/OpenCC/actions/workflows/cmake.yml)
![Bazel](https://github.com/BYVoid/OpenCC/actions/workflows/bazel.yml)
![MSVC](https://github.com/BYVoid/OpenCC/actions/workflows/msvc.yml)
![Node.js CI](https://github.com/BYVoid/OpenCC/actions/workflows/nodejs.yml)
![Python CI](https://github.com/BYVoid/OpenCC/actions/workflows/python.yml)
![AppVeyor](https://ci.appveyor.com/project/Carbo/OpenCC)

![latest packaged version(s)](https://repology.org/project/opencc/versions)

Introduction 介紹

!OpenCC

Open Chinese Convert (OpenCC, 開放中文轉換) is an opensource project for conversions between Traditional Chinese, Simplified Chinese and Japanese Kanji (Shinjitai). It supports character-level and phrase-level conversion, character variant conversion and regional idioms among Mainland China, Taiwan and Hong Kong. This is not translation tool between Mandarin and Cantonese, etc.

中文簡繁轉換開源項目,支持詞彙級別的轉換、異體字轉換和地區習慣用詞轉換(中國大陸、臺灣、香港、日本新字體)。不提供普通話與粵語的轉換。

Discussion (Telegram): https://t.me/open_chinese_convert

Features 特點

* 嚴格區分「一簡對多繁」和「一簡對多異」。
* 完全兼容異體字,可以實現動態替換。
* 嚴格審校一簡對多繁詞條,原則爲「能分則不合」。
* 支持中國大陸、臺灣、香港異體字和地區習慣用詞轉換,如「裏」「裡」、「鼠標」「滑鼠」。
* 詞庫和函數庫完全分離,可以自由修改、導入、擴展。

Installation 安裝

Package Managers 包管理器

* Debian
* Ubuntu
* Fedora
* Arch Linux
* macOS (Homebrew)
* WinGet (winget install BYVoid.OpenCC) - WIP
* Bazel
* Node.js
* Python
* More (Repology)

Prebuilt 預編譯

* Windows (x86_64): OpenCC-1.2.1-alpha2 (SHA-256)

This is a Windows release intended for WinGet distribution. For details, see doc/windows-winget-release.md.

Usage 使用

Online 線上轉換

https://opencc.js.org/converter?config=s2t

Node.js

npm install opencc

ts
import { OpenCC } from 'opencc';
async function main() {
const converter: OpenCC = new OpenCC('s2t.json');
const result: string = await converter.convertPromise('汉字');
console.log(result); // 漢字
}

See demo.js and ts-demo.ts.

Python

pip install opencc (Windows, Linux, macOS)

python
import opencc
converter = opencc.OpenCC('s2t.json')
converter.convert('汉字') # 漢字

C++

``c++
#include "opencc.h"

int main() {
const opencc::SimpleConverter converter("s2t.json");
converter.Convert("汉字"); // 漢字
return 0;
}

text
Full example with Bazel

C

c
#include "opencc.h"

int main() {
opencc_t opencc = opencc_open("s2t.json");
const char* input = "汉字";
char* converted = opencc_convert_utf8(opencc, input, strlen(input)); // 漢字
opencc_convert_utf8_free(converted);
opencc_close(opencc);
return 0;
}

text
Full Document 完整文檔

Command Line

* opencc --help
*
opencc_dict --help

Other Ports (Unofficial)

* Swift (iOS): SwiftyOpenCC
* iOSOpenCC (pod): iOSOpenCC
* Java: opencc4j
* Android: android-opencc
* PHP: opencc4php
* Pure JavaScript: opencc-js
* WebAssembly:
* opencc-wasm (website)
* wasm-opencc
* Browser Extension: opencc-extension
* Go (Pure): OpenCC for Go
* Dart (native-assets): opencc-dart

Configurations 配置文件

#### 預設配置文件

* s2t.json Simplified Chinese to Traditional Chinese 簡體到繁體
*
t2s.json Traditional Chinese to Simplified Chinese 繁體到簡體
*
s2tw.json Simplified Chinese to Traditional Chinese (Taiwan Standard) 簡體到臺灣正體
*
tw2s.json Traditional Chinese (Taiwan Standard) to Simplified Chinese 臺灣正體到簡體
*
s2hk.json Simplified Chinese to Traditional Chinese (Hong Kong variant) 簡體到香港繁體
*
hk2s.json Traditional Chinese (Hong Kong variant) to Simplified Chinese 香港繁體到簡體
*
s2twp.json Simplified Chinese to Traditional Chinese (Taiwan Standard) with Taiwanese idiom 簡體到繁體(臺灣正體標準)並轉換爲臺灣常用詞彙
*
tw2sp.json Traditional Chinese (Taiwan Standard) to Simplified Chinese with Mainland Chinese idiom 繁體(臺灣正體標準)到簡體並轉換爲中國大陸常用詞彙
*
t2tw.json Traditional Chinese (OpenCC Standard) to Taiwan Standard 繁體(OpenCC 標準)到臺灣正體
*
hk2t.json Traditional Chinese (Hong Kong variant) to Traditional Chinese 香港繁體到繁體(OpenCC 標準)
*
t2hk.json Traditional Chinese (OpenCC Standard) to Hong Kong variant 繁體(OpenCC 標準)到香港繁體
*
t2jp.json Traditional Chinese Characters (Kyūjitai) to New Japanese Kanji (Shinjitai) 繁體(OpenCC 標準,舊字體)到日文新字體
*
jp2t.json New Japanese Kanji (Shinjitai) to Traditional Chinese Characters (Kyūjitai) 日文新字體到繁體(OpenCC 標準,舊字體)
*
tw2t.json Traditional Chinese (Taiwan standard) to Traditional Chinese 臺灣正體到繁體(OpenCC 標準)

#### 指定配置文件

通过环境变量OPENCC_DATA_DIR加载指定路径下的配置文件

sh
OPENCC_DATA_DIR=/path/to/your/config/dir opencc --help
text

Experimental Plugins 試驗性插件

OpenCC 現已支援外部 C++ 分詞插件。當前第一個插件為 opencc-jieba
可通過
s2twp_jieba.jsontw2sp_jieba.json 等插件配置啓用。

OpenCC now supports external C++ segmentation plugins. The first plugin is
opencc-jieba, which can be enabled through plugin-backed configs such as
s2twp_jieba.json and tw2sp_jieba.json.

注意:

- 該插件機制目前仍為試驗性功能。
-
jieba 插件是可選組件,預設 OpenCC 構建、Python 套件和 Node.js 套件都不要求它。
-
opencc-jieba 額外依賴 cppjieba 及其配套詞典資源,這些依賴僅在構建或分發該插件時需要。
- 在下一次正式發布版本之前,插件 ABI 仍可能發生變化,不應視為穩定介面。
- 我們預計從下一次正式發布版本開始,將插件 ABI 視為穩定介面。
- Windows 下插件必須與宿主 OpenCC 二進位使用 ABI 相容的工具鏈/執行時構建;MSVC 與 MinGW 產物不支援混用。

Notes:

- The plugin mechanism is currently experimental.
- The
jieba plugin is optional and is not required for the default OpenCC
build, Python package, or Node.js package.
-
opencc-jieba additionally depends on cppjieba and its dictionary
resources. These dependencies are only needed when building or distributing
the plugin itself.
- The plugin ABI may still change before the next formal OpenCC release and
should not yet be treated as stable.
- We expect to treat the plugin ABI as stable starting with the next formal
OpenCC release.
- On Windows, plugins must be built with an ABI-compatible toolchain/runtime as
the host OpenCC binary. Mixing MSVC-built hosts with MinGW-built plugins, or
the reverse, is unsupported.

Build 編譯

Build with CMake

#### Linux & macOS

g++ 4.6+ or clang 3.2+ is required.

bash
make
text
#### Windows Visual Studio:
bash
build.cmd
text

Build with Bazel

bash
bazel build //:opencc
text

Test 測試

#### Linux & macOS


make test
text
#### Windows Visual Studio:
bash
test.cmd
text
#### Test with Bazel
bash
bazel test --test_output=all //src/... //data/... //python/... //test/...
text

Benchmark 基準測試


make benchmark
text
Example results (from Github CI, commit ID 9e80d5d, 2026-04-16, CMake macos-latest):

-------------------------------------------------------------------------
Benchmark Time CPU Iterations
-------------------------------------------------------------------------
BM_Initialization/hk2s 868 us 868 us 665
BM_Initialization/hk2t 139 us 139 us 5059
BM_Initialization/jp2t 203 us 203 us 3448
BM_Initialization/s2hk 26201 us 26200 us 27
BM_Initialization/s2t 26385 us 26382 us 27
BM_Initialization/s2tw 27108 us 27108 us 27
BM_Initialization/s2twp 26446 us 26445 us 25
BM_Initialization/s2twp_jieba 142754 us 141974 us 5
BM_Initialization/t2hk 66.7 us 66.7 us 10519
BM_Initialization/t2jp 166 us 166 us 4215
BM_Initialization/t2s 797 us 797 us 883
BM_Initialization/t2tw 58.1 us 58.1 us 12075
BM_Initialization/tw2s 845 us 845 us 831
BM_Initialization/tw2sp 1004 us 1004 us 697
BM_Initialization/tw2t 93.3 us 93.3 us 7492
BM_ConvertLongText/s2t 327 ms 327 ms 2 bytes_per_second=5.45069M/s
BM_ConvertLongText/s2twp 554 ms 554 ms 1 bytes_per_second=3.21299M/s
BM_ConvertLongText/s2twp_jieba 742 ms 741 ms 1 bytes_per_second=2.40096M/s
BM_Convert/s2t_100 0.649 ms 0.649 ms 1083 bytes_per_second=6.15628M/s
BM_Convert/s2t_1000 6.64 ms 6.64 ms 106 bytes_per_second=6.16118M/s
BM_Convert/s2t_10000 68.1 ms 68.1 ms 10 bytes_per_second=6.14608M/s
BM_Convert/s2t_100000 718 ms 717 ms 1 bytes_per_second=5.96785M/s
BM_Convert/s2twp_100 1.20 ms 1.20 ms 552 bytes_per_second=3.32407M/s
BM_Convert/s2twp_1000 12.3 ms 12.3 ms 57 bytes_per_second=3.32311M/s
BM_Convert/s2twp_10000 126 ms 126 ms 6 bytes_per_second=3.31205M/s
BM_Convert/s2twp_100000 1296 ms 1296 ms 1 bytes_per_second=3.3027M/s
BM_Convert/s2twp_jieba_100 1.51 ms 1.49 ms 495 bytes_per_second=2.67698M/s
BM_Convert/s2twp_jieba_1000 15.0 ms 15.0 ms 48 bytes_per_second=2.72292M/s
BM_Convert/s2twp_jieba_10000 153 ms 153 ms 5 bytes_per_second=2.73681M/s
BM_Convert/s2twp_jieba_100000 1728 ms 1728 ms 1 bytes_per_second=2.47784M/s
`

Projects using OpenCC 使用 OpenCC 的項目

Please update if your project is using OpenCC.

* ibus-pinyin
* fcitx
* rimeime
* libgooglepinyin
* ibus-libpinyin
* alfred-chinese-converter
* GoldenDict
* China Biographical Database Project (CBDB)

License 許可協議

Apache License 2.0

Third Party Library 第三方庫

* darts-clone BSD License
* marisa-trie BSD License
* tclap MIT License
* rapidjson MIT License
* Google Test BSD License
* cppjieba MIT License
- Optional dependency used by the experimental
opencc-jieba plugin.
- 試驗性
opencc-jieba` 插件使用的可選依賴。

Change History 版本歷史

* NEWS

* Introduction 詳細介紹 https://github.com/BYVoid/OpenCC/wiki/%E7%B7%A3%E7%94%B1
* 現代漢語常用簡繁一對多字義辨析表 http://ytenx.org/byohlyuk/KienxPyan

Contributors 貢獻者

* BYVoid
* 佛振
* Peng Huang
* LI Daobing
* Kefu Chai
* Kan-Ru Chen
* Ma Xiaojun
* Jiang Jiang
* Ruey-Cheng Chen
* Paul Meng
* Lawrence Lau
* 瑾昀
* 內木一郎
* Marguerite Su
* Brian White
* Qijiang Fan
* LEOYoon-Tsaw
* Steven Yao
* Pellaeon Lin
* stony
* steelywing
* 吕旭东
* Weng Xuetian
* Ma Tao
* Heinz Wiesinger
* J.W
* Amo Wu
* Mark Tsai
* Zhe Wang
* sgqy
* Qichuan (Sean) ZHANG
* Flandre Scarlet
* 宋辰文
* iwater
* Xpol Wan
* Weihang Lo
* Cychih
* kyleskimo
* Ryuan Choi
* Prcuvu
* Tony Able
* Xiao Liang
* Frank Lin

Please feel free to update this list if you have contributed OpenCC.