LoginSignup
4
0

More than 3 years have passed since last update.

[OCR] Google Driveを使ったOCRのシェルスクリプトを書いた…ような?

Last updated at Posted at 2020-05-24

スクリプトの場所:GitHub - linm25stg/OCR_book2data

これは何?

GoogleDriveに画像を投げると勝手にOCRされてドキュメントが作成される機能を利用するスクリプトです

* 本GIFはWin10、WSL(Ubuntu18.04)環境で作成されています。

出来ること

  • JPGPNGテキストデータに変換してくれます。
  • JPGPNGのみ対応。他は非対応。
    • 上記拡張子2種を一緒のフォルダに混ぜても構いません。
    • ファイルサイズを2MB以下にして下さい。

使用には以下のものが必要です

  1. gdriveをGithubからご自身の使用の環境OSに合わせてDLして下さい
    • そのままでは使えないので、まずデフォルトの OAuth認証を書き直す 必要があります。 こちら(Qiita)の記事を参照してください。
      • 上記のリンクを参照して OAuth(1.client_id 2.client_secret)は取得済だけど、それでも認証が通らない の方はこちら(teratailの自分の回答)を御覧ください
        • 既にバイナリ書換済み、それでも通らない場合、ここ画像の左下 goto <your app name>(unsafe)クリックリンクを見逃している可能性が高いです。
  2. 本スクリプトbook2data.sh
    • スクリプト内で使用したコマンドは ↓
gdrive import $1 -p $2 # $1はディレクトリーパス。$2はGoogleDriveのディレクトリーID
gdrive export --mime text/plain ${id} # ${id}は ↑で発生したドキュメントファイルのID
gdrive delete ${id} 

インストール

Github の releases から落として下さい。

* Mac OS XはLFなのでbook2data-ubuntu.shを使って下さい

Filename Version 改行コード Shasum
book2data-osx.sh 0.9 CR(MacOS9以前) SHA1: 0DD7F2E8979827F6447E6DFD1257BB1273836FC7
book2data-ubuntu.sh 0.9 LF SHA1: 82D0D148A3D21648BF6D413CAB9BF3CF752F7153
$ mv book2data-hoge.sh book2data.sh

$ sudo chmod +x book2data.sh

やった方が便利な事

  • gdrive
$ mv gdrive-hoge-x64 gdrive
$ sudo chmod +x gdrive
$ sudo cp gdrive /bin/
  • 同じく book2data.sh
$ sudo cp book2data.sh /bin/

使い方

# 基本処理
$ sudo book2data.sh $1 $2
# 例
$ sudo book2data.sh /mnt/d/OCR/とある書籍/01/ 1wxzzCXPfmKZV8VnLqaeGPTW1Pxxxxx

このOCR環境での駄目な部分

  • GoogleDrive API の処理上限関係で 一辺に5個以上同時処理させると Failed to get file: googleapi: Error 404: File not found: to., notFound のエラーが出ます

    • 自炊小説4冊同時変換では 400枚 x 4個同時処理して平均2,3個問題発生します
    • 上記エラー発生した場合、スクリプト内gdrive delete ${id} コマンドが実行されない可能性がありますので、ご自身のGoogleDriveのHomeにあるドキュメントを削除して下さい。
    • また、スクリプトを途中終了した場合、最後のrm -rf $workdir 実行されないので、tmpにある作業用フォルダーを削除して下さい
  • 出力テキストファイルの拡張子がtxtではない

    • 仕様です。 export --mime text/plainで指定していますが、OSによって異なるテキスト拡張子で出力されます…
      • 例:Win10 → asm、Ubuntu → asc
    • スクリプトの初期設定ではasc → txtする様に書いています。Ubuntu 以外のユーザーは書き換えてご使用下さい
      • 表示 gif では自分用のスクリプトを動かしてる為、Win10用のasmって出てます
  • 出力されたテキストファイルに半角スペースが発生する

    • 仕様です。
    • 半角指定して置換削除したかったのですが、上手く実装できませんでした…ご教授して下さるとありがたいです
  • 自動的に結合して1個のテキストファイルにならない

    • 頑張ったのですが、上手く実装できませんでした。ご教授下さい!
    • basenameを使って、$1パスの最後のディレクトリ名を取得して basename.txt したいと考えています
  • usageを使った book2data.sh --help が無い

    • 実装予定がありません。
  • ルビ多めの小説だとゴミが多い

    • はい。細かいOCR制御が出来ない為仕方ありません。
      • 音声に変換して聞いてると案外その辺は脳みそがスルッとスルーしてくれる為、OCRを読書として使用する場合はmp3化をオススメします
  • GoogleDriveのゴミ箱が混沌とする

    • 毎回デdeleteコマンドを自動実行してる為、どうしてもそうなってしまいます。
    • ゴミ箱を第2のファイル保管場所としている場合、OCR専用のGoogleアカウントを取得することをおすすめします。

総括

基本的に GoogleDrive のOCR機能を使用しているので、細かい制御は聞きません。オートマです。

しかし、縦読みOK、手書きでも一部OK、印刷フォントなら99%OK、挿絵は自動スルー、多言語対応 と個人用OCRで考えると中々便利です。

1年前は表内の文字は読めなかったりしてたけど、いまは大分マシになってきたりと、大分進化されていますね。

GooglePhotoの学習データを流用しているので、みんなももっと学習データをGoogleさんに上納すればいいと思うよ('A`)

  • 2020-05-27 改稿しました。
  • 2020-05-28 スクリプトのインストールを追加しました。
4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0