image_-_コピー__2_

Google製OCRライブラリの「Tesseract」をEmscriptenでラップした「Tesseract.js」で日本語OCR試してみる

OCRしたい場合どうするんやろ?  OSSで日本語対応してるやつあるんか?

TesseractっていうGoogle製のOCRライブラリがあるんか!

Webブラウザで動作するようなJavaScriptのOCRライブラリはあるんかな?

Tesseract.jsってまんまなJavaScriptライブラリあるやんけ!

精度どんなもんやろか? ← イマココ

タイトルの「Emscripten」はC/C++をJavaScriptに変換できるような奴(雑)

EmscriptenEmscripten は LLVM のバイトコードの JavaScript へのコンパイラです。LLVM バイトコードは、developer.mozilla.org

環境構築(雑)

適当にディレクトリ作ってコマンド叩く。

npm install tesseract.js

適当にindex.jsとかファイル作ってExampleをコピペしてjpnに書き換える。

日本語の文字列が書かれてるimage.pngを用意して、以下のコマンドを叩く。

node index.js

これでコンソール上に画像の日本語が文字列として取得できるはず。

試してみた

image.pngを差し替えてコマンドを叩く手作業を繰り返す。

まず用意したのはこの画像。
文字小さめ、そこそこ長文といきなりハードモード。

画像1

結果

A は 外 と う て D こ の i⑧m 人 と と も に の の e で あ り な たh。

ま る ま ま が 訣 送 ヘ は ま も い ゎ り る せ だ ま せ と も が ふ ら ら し て な
ぅ ぅ に ikRSu な か
電 捨 に ょ し で す な け れ
な い 。 ⑤ ゃ ろ ④ 百 さ ん に 恐 ゅ S ん S か R が し た ⑧ オ ェ の る 映 思 ら か ー& に と h ぅ
ち Rin ん ま す で た か し こ の 定 危 ご ち ち ⑤00 る ま 長 に な る か ら 、 睦 き ん の 事 に の
れ そ か ご ち ら と 肋 い て れ m ほ に ち ち C に 田 す ょ う に も し 入 栄 き に す る た ら い と さ
ぞ ょ う ゃ く ① ち り た か ら 呂 っ ヱ し ょ の に な り た で す 。

だ か ら っ ま り ご ほ を 気 に ス る の も ま す ま す 湯 と 信 じ る り て 、 そ の B カ が は 栄 き っ

😇
俺が悪かった。

次に用意したのはこの画像。
文字を大きく、短く。

画像2

結果

本 日 天 気 晴 朗 ナ レ ド モ 浪 高 シ

やりました👍

OCRっていうからには手書き文字対応して欲しいよねってことで次はこれ。
もちろん素直に読み込ませる気はなく、縦。

画像3

結果

覇
目 。 ⑤
国 メ
國 ま ) M
0 惧 _
国

睡 に
目

この画像を読み込ませられるTesseractの気持ちも大事だけど、この文字列をnoteに貼る俺の気持ちにもなって欲しい。

気を取り直して画像の向きを正しくする。

画像4

結果

ト a 綱 梨 梨 梨 梨 絵 綱 栄
愛 す に ミ ミ ス
目 _ 陸 ふ ヒ ュ ッ リ - 瞥

俺は悪くなかった。

ちょっとムキになってこの画像を正しく認識させたくなってきた。
トリミングして、白黒にして、明瞭度弄った。全部Windows標準機能さ!

画像5

結果

惧 号 に ミ ミ ネ ス
ー

メアリーどこいったんや……。

そうだ1文字ずつ細切れにしてやろう。

画像6

画像7

画像8

画像9

画像10

画像11

結果

寝
『
峠
ー
ー
ヽ
ー
ズ`

「寝」が出たときはこれでいけると思ったんですがね。

分かったこと

気軽にOCRを実装できる。
CDN版もあるのでNode.js要らずに試せる。

文字の大きさ、明瞭さは超重要。

画像の上下左右は正規化してから読み込ませる必要がある。

人間の認識能力はすごい。

あとがき

この「寝耳にミミズ 障子にメアリー画像」はパブリックドメインにしておくので、我こそはという方は挑戦してみてください。


😉