kanjidraw
kanjidraw copied to clipboard
kanjidraw - handwritten kanji recognition library + gui
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.
Installing
Debian
Official packages are available in Debian unstable and Ubuntu jammy.
$ apt install kanjidraw
You can also manually build a Debian package using the debian/sid
branch, or download pre-built .deb
s via GitHub releases.
NixOS
An official package is also available in nixpkgs unstable.
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
Dependencies
- Python >= 3.5 (w/ Tk support for the GUI).
Debian/Ubuntu
$ apt install python3-tk
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 rxvt | grep -q "^$pid$"; then
key=ctrl+alt+v
elif ( pids terminal; pids st-256color ) | 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
© FC Stegerman
KanjiVG (stroke data)
© Ulrich Apel