Clojure + AWS Textract で OCR してみる

この記事は😺TECHSCORE Advent Calendar 2019😺の9日目の記事です。

🐈 Clojure + AWS Textract で OCR ! 🐈

紙書籍で英語の文書を読む時に面倒に思うのは、辞書をひくことです。
紙書籍では、その度にスマホなどを取り自分で入力せねばならず、極めて面倒です。

幸いドキュメントスキャナは所持しているので、電子化してみることにしました。
スキャナで画像として取りこんだものを読み取り、プレインテキストにして、普段使っているPC上のアプリでサクっと調べられるようにするのです。

プレインテキスト化したものを一箇所にまとめておけば、検索も容易になるので便利そうです。

🐈 AWS Textract 🐈

なんでもある感のある AWS ですが、Textract という OCR 的なサービスもあります。
Textract には単純な文字の読み取りだけでなく、フォームや表の読み取りの機能までありますが、今回は単純な文字の読み取りのみを行います。

AWS CLI を使えばシェルスクリプトでも十分可能ですが、今回は段落ごとにまとめる処理を入れたかったので、簡単に Clojure のコードを書いています。
ちなみに Java という言語でも書けるようですが、一般的な言語のほうが良いと思い Clojure にしました。

API は簡単で、S3 というストレージ上の場所を与えるだけです。
そうすると JSON が返ってくるので、適当に解釈するだけです。

JSON は以下のような形式になっています。
ページと行と単語といったブロック並んでいて、それぞれの Relationships プロパティでその関連が把握できるようになっています。
この内の行ブロックを抽出して、プレインテキストを生成します。
ついでに、全ての行が連続していると読みにくいので、段落毎にまとめて間に改行を入れます。

🐈 まとめ 🐈

実際に数ページ読んでみましたが、誤読取も特に見つかりませんし、単語にカーソルを合わせるだけで辞書をひけるのは便利ですね。

また、改めて感じたことですが Clojure (というか Lisp)は、REPL (対話環境) が便利です。
関数単位でコードを書いていくので、コードを編集しながら試行錯誤することが、気軽にできます。
REPL の対話環は関数型言語と特に相性が良いですね。

🐈 括弧いいねこ 🐈

画像です。

↑の括弧いい猫の画像を OCR したら肉球にメッセージが発見されました。「ad 4」はたしてどういう意味が…?

Comments are closed, but you can leave a trackback: Trackback URL.