見出し画像

OCRしたテキストをGoogleスプレッドシートに転記する

OCRで文字認識した数字をGoogleのスプレッドシートに自動転記をする仕組みを作ってみました。

FaxなどをOCRで読み取って文字認識したデータはコピペできるだけでは便利さが足りません。読み取った後にそれをExcelや発注システムなどに入力をする作業が続いているので、いちいち入力のためにマウスでコピペをするのでは、入力作業に手間が掛かってしまいます。これを自動で入力をしてくれるところまでやってくれるのが望ましいです。

仕様

このプログラムの仕様は、インターネット経由でOCRで文字認識した文字データを転送してGoogleのスプレッドシートに書き込みをします。ディスプレイ画面上でプログラムが入力操作をしているわけではないので、スプレッドシートは閉じていても転記をしてくれます。
書き込み完了後の形は下の画像のようになります。

OCRで読み取ってスプレッドシートに書き込んだ

手順と流れ

OCRで読み取る画像データは、Investing.comのアメリカのダウ・ジョーンズ株価指数(Investing.com DJI)の時系列の終値のリストを使いました。このページから時系列データの表のスクリーンショットを撮って、表の上の方を画像に保存したものを用意します。

Investing.com のページ

下のような感じで切り取って画像をファイルを作成しました。画像では数字や文字のコピペはできません。

時系列データの画像

アプリは至ってシンプルで、画像をアプリにドラッグ&ドロップするだけになっています。

アプリの初期画面

ここに先程用意した画像をドラッグ&ドロップします。すると画像が表示されて文字認識した結果が下に表示されます。

OCR認識結果

認識結果を画像と比べると、6月28日のLowの数値でカンマと小数点が抜けています。6月25日、24日、21日のVol.の数値から小数点が欠落しているようです。Change %の値も、=やーなどのゴミが入ってしまっているのが分かります。

Date(日付)とPrice(終値)の値をOCRで文字認識が終わった直後に自動でGoogleのSpreadSheetに送って転記させました。日付は日本式にしたかったので、元のデータがアメリカ式の月/日/年の順になっているのを、日本式の年/月/日にプログラムで変換して送っています。

Googleスプレッドシートに転送した結果

一度このように表形式に転記してからの方が、確認がしやすいし、修正もやりやすいと思います。

一連の動作の動画
ここまで静止画像で説明してきましたが、動きが分かるように動画を用意しました。一秒間隔で日付ごとにデータを転送しています。(もちろん一度にデータを転送することも可能です)

全体の動き

技術情報
プログラム言語:python
OCR:tesseract
サーバー側処理:Google Apps Script


課題

  1. 英数文字でもOCRの文字認識で、カンマや小数点の欠落のような誤認識が発生する。(日本語の文字認識よりかなりまし)

  2. 認識精度を上げるための画像の前加工処理を入れてみたい。

  3. Googleスプレッドシートにはリアルタイムで書き込まれる。書き込み中に誰かが変更を上書きしてしまわないように編集を一時できないようにする必要がある。

自動で文字認識された結果が、クラウド上のGoogleスプレッドシートに書き込まれる様は見ていて気持ちがいい。OCRに関していえば正しく文字認識できていれば「こういうのをやりたかったんだよな」という仕組みである。紙の現実世界とソフトウェアのデジタルの世界の繋ぎ合わせを頑張ってみたいです。



この記事が気に入ったらサポートをしてみませんか?