handwritten kanji recognition
Project description
kanjidraw - handwritten kanji recognition
kanjidraw
is a simple Python library + GUI for matching (the strokes
of a) handwritten kanji against its database.
You can use the GUI to draw and subsequently select a kanji from the list of probable matches, which will then be copied to the clipboard.
The database is based on KanjiVG and the algorithms are based on the Kanji draw Android app.
Demo
Jiten Japanese Dictionary
uses kanjidraw
with a
JavaScript frontend.
Requirements
- Python >= 3.5 (w/ Tk support for the GUI).
Debian/Ubuntu
$ apt install python3-tk
Installing
Using pip
$ pip install kanjidraw
NB: depending on your system you may need to use e.g. pip3 --user
instead of just pip
.
From git
NB: this installs the latest development version, not the latest release.
$ git clone https://github.com/obfusk/kanjidraw.git
$ cd kanjidraw
$ pip install -e .
NB: you may need to add e.g. ~/.local/bin
to your $PATH
in order
to run kanjidraw
.
To update to the latest development version:
$ cd kanjidraw
$ git pull --rebase
Examples
Kanji Input on Linux
kanjidraw-paste
Opens kanjidraw
to select one (--oneshot
) or multiple
(--multiple
) kanji, and afterwards pastes the selected kanji in the
active window. Requires xclip
and xdotool
.
#!/bin/bash
set -e
pid="$( xdotool getactivewindow getwindowpid )"
pids() { xdotool search --classname "$1" getwindowpid %@; }
if pids urxvt | grep -q "^$pid$"; then
key=ctrl+alt+v
elif pids terminal | grep -q "^$pid$"; then
key=ctrl+shift+v
else
key=ctrl+v
fi
kanjidraw -s "$@" | tr -d '\n' | xclip -i -selection clipboard
xdotool key --delay 250 "$key"
i3 config
Keybindings for i3. Creating custom keybindings for kanjidraw-paste --oneshot
and/or kanjidraw-paste --multiple
should work similarly
with other window managers and desktop environments.
for_window [title="Kanji Draw"] floating enable
bindsym $mod+Control+k exec --no-startup-id kanjidraw-paste --oneshot
bindsym $mod+Control+m exec --no-startup-id kanjidraw-paste --multiple
Miscellaneous
GUI Options
$ kanjidraw --help
usage: kanjidraw [-h] [-s] [-o | -m] [-d] [--version]
optional arguments:
-h, --help show this help message and exit
-s, --stdout print kanji to stdout instead of copying to clipboard
-o, --oneshot quit after one kanji
-m, --multiple queue kanji and copy/print after pressing 'c' or quitting
-d, --dark use dark theme
--version show program's version number and exit
Additional keybindings: q
to quit, <esc>
to go back.
Enabling Dark Mode
$ export KANJIDRAW_DARK=1
Disabling the Grid
$ export KANJIDRAW_NOGRID=1
License
Code
© Felix C. Stegerman
KanjiVG (stroke data)
© Ulrich Apel
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file kanjidraw-0.2.3.tar.gz
.
File metadata
- Download URL: kanjidraw-0.2.3.tar.gz
- Upload date:
- Size: 519.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.4.2 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 170067b144455c90eaad52432de8f103ae3b63f56025db0d7b842aee06859d85 |
|
MD5 | 20fdca36cafef45e2cb5f2f3611d76ed |
|
BLAKE2b-256 | 6e036119b7c7398c56161b39814b5b5a9617f730a2550c7661f8809dda492015 |
File details
Details for the file kanjidraw-0.2.3-py3-none-any.whl
.
File metadata
- Download URL: kanjidraw-0.2.3-py3-none-any.whl
- Upload date:
- Size: 542.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.4.2 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56841978197a7ba71c553fdc3cefda79a53cff339167974cc0e590f299a63100 |
|
MD5 | 9a3ad5b0cc6f0faa3cdaf202859e5431 |
|
BLAKE2b-256 | 82a81002fed73f4b3e6ec20b827a9e4eb3daf94d9a564461d905bcd878030281 |