Metadata-Version: 2.4
Name: dinkit
Version: 1.1.2
Summary: 手写汉字识别库 (Digital Ink Kit)
Author: liutingchao
Author-email: liutingchao@hotmail.com
License: MIT
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pywin32; platform_system == "Windows"
Dynamic: license-file

# dinkit

Digital Ink Kit — 手写汉字识别库。

## 安装

```bash
pip install dinkit
```

## 快速开始

```python
from dinkit import recognize

strokes = [
    [[312, 211], [312, 215], ...],  # 第一笔
    [[382, 363], [401, 358], ...],  # 第二笔
    # ...
]

result = recognize(strokes)
print(result)
# {'我': 3049, '找': 3784, '戌': 4144, ...}
```

笔迹格式：每个子列表代表一笔，内含 `[x, y]` 坐标点。

## 连续识别

如需多次识别，使用 `Recognizer` 复用引擎实例：

```python
from dinkit import Recognizer

with Recognizer() as reco:
    result1 = reco.recognize(strokes1)
    result2 = reco.recognize(strokes2)
```

## 项目结构

```
dinkit/
├── dinkit/           # Python 包
│   ├── __init__.py   # recognize() 入口
│   ├── recognizer.py # Recognizer 类
│   ├── _native.py    # ctypes 原生绑定
│   └── lib/          # 平台动态库 (.so / .dll / .dylib)
├── native/           # C/C++ 识别引擎源码
├── tests/            # 测试
└── project/qt/       # Qt 手写识别演示程序
```

## 开发环境

在项目根目录安装可编辑包（IDE 调试和测试需要先执行此步骤）：

```bash
pip install -e .
```

运行测试：

```bash
pytest tests/
# 或
python tests/test_recognize.py
```

若尚未编译原生库，需先构建并复制到 Python 包：

```bash
mkdir -p build && cd build && cmake .. && cmake --build .
cp libdinkit.* ../dinkit/lib/
```

## 从源码构建原生库

```bash
mkdir build && cd build
cmake ..
make
cp libdinkit.* ../dinkit/lib/   # 复制到 Python 包
```

## Qt 演示程序（汉字守卫战）

手写汉字闯关游戏：按提示写字，根据识别候选排名计分，完成后查看总成绩。

```bash
mkdir -p build && cd build
cmake .. -DBUILD_QT_DEMO=ON
cmake --build .
./project/qt/dinkit_demo
```

详见 [project/qt/README.md](project/qt/README.md)。

## 向后兼容

旧版 API 仍可使用：

```python
from dinkit import Recognize

reco = Recognize()
result = reco.Single(strokes)
```
