GoogleDriveのOCR機能を使って、大量の画像ファイルをテキストに変換する


 GoogleDriveは、Googleが提供しているストレージサービスです。よく知られている機能としては、オフィスソフトがなくても文書を新規に作成し、編集でき、また、OCR機能をそなえています。このページでは、大量の画像ファイルをOCRでテキストに変換する作業手順などについて紹介します。

OCRでテキストに変換する一般的な方法

  • パソコンのウエブブラウザからGoogleDriveのマイドライブのページに接続する。

  • 「新規」ボタンをクリックして表示されるメニューのうち、「ファイルのアップロード」を選択して、画像ファイルをアップロードする。

  • アップロード終了後、画像のファイル名が表示される。これを右クリックして表示されるメニューのうち、「アプリで開く」を選択して、さらに「Google ドキュメント」を選択すると別のタブでOCR処理がはじまる。

  • OCR処理が終わると、画像ファイル名と同じタイトルのグーグルドキュメントが開かれる。1ページ目が画像ファイル、2ページ目以降がOCR変換されたテキストとなっている。

     大量の画像ファイルについて上記の処理を行うと、手作業となるため、大変な労力と時間が必要になります。
     また、画像ファイルがGoogleDriveの空き容量を費やす(注:Google ドキュメントはGoogleDriveの空き容量を費やさない)という欠点があります。
     これらの問題については、Petter Rasmussen氏がgithub上で公開しているgdriveというソフトウエアを使うことで解消できます。

    gdriveを使うための準備

     gdriveはfreebsd-386,freebsd-x64,linux-386,linux-arm,linux-rpi,linux-x64,osx-386,osx-x64,windows-386,windows-x64に対応していますので、お使いの環境に応じたファイルをgdriveのページからダウンロードしてください。

    Windowsでインストールする場合

    Windowsでインストールする場合のみ説明しますので、他のOSの場合は適宜読み替えてください。

  • Windowsは32bit版か、64bit版かに分かれますので、それ応じたファイルを上記のページからダウンロードします。
     今回は32bit版のWindowsを使いますので、「drive-windows-386.exe v1.9.0」(2015/12/3現在の最新版)をダウンロードします。
     ファイル名はdrive-windows-386.exeです。
  • スタートメニューの中からすべてのプログラム>アクセサリ>コマンド プロンプトを選択し、cdコマンドを使ってダウンロードしたファイルがあるフォルダの中に移動します。
  • コマンドプロンプト上でdrive-windows-386.exeを実行すると、
    Go to the following link in your browser:
    https://accounts.google.com/o/oauth2/auth?client_id=(中略)h%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=state

    Enter verification code:
    という表示に続けてverification codeの入力待ちになりますので、httpsからstateまでの文字列を、行が分かれている場合には1行に直した上で、ウエブブラウザのアドレスバーの中に入れて、そのページに行ってください。 そのページでは
    GDrive が次の許可をリクエストしています:
    詳細
    Google ドライブのファイルを表示および管理できます
    詳細を表示
    [許可] をクリックすると、このアプリと Google がそれぞれの利用規約とプライバシー ポリシーに従ってあなたの情報を利用することを許可することになります。 このアカウント権限やその他のアカウント権限をいつでも変更できます。
    と表示されます(場合によっては表示の前にログインを要求されるかもしれません)ので、よく読んだ上で「許可」ボタンを押すと、次の画面で
    このコードをコピーし、アプリケーションに切り替えて貼り付けてください:
    という文字の下にテキストボックスがあります。その中の文字列がverification codeです。
  • コマンドプロンプトに戻って、先ほどのverification codeを入力すれば、gdriveを使うための準備は終わりです。
     なお、インターネットに接続できていない場合には、エラーが出ます。コマンドプロンプトからのインターネット接続とブラウザのインターネット接続とは、設定が別になっている等の原因が考えられますので、インターネットに接続できる他の環境でお試しください。

    バッチファイルを作成する

     バッチファイルを作成するためにはいろいろな情報を収集して組み合わせることになり、テキストファイルを作成する上である程度の能力が必要になります。例として、私が作成したバッチファイルの一部をお見せします。
    ..\drive-windows-386.exe -c ..\.gdrive upload -p 0B(中略)LWs --convert -f 2010h22a_ap_pm_qs-019-018.png
    ..\drive-windows-386.exe -c ..\.gdrive upload -p 0B(中略)LWs --convert -f 2010h22a_ap_pm_qs-020-019.png
    ..\drive-windows-386.exe -c ..\.gdrive upload -p 0B(中略)LWs --convert -f 2010h22a_ap_pm_qs-021-020.png
    (以下続く)
     1行目だけを説明すると、「カレントフォルダの親フォルダ内にあるdrive-windows-386.exeを実行し、親フォルダの下にある.gdriveフォルダ内にある設定情報を使い(-c)、アップロードする(upload)。アップロード先のフォルダのIDは0B(中略)LWsであり(-p)、アップロードと同時に変換を行う(--convert)。アップロードする画像ファイルはカレントフォルダ内にある2010h22a_ap_pm_qs-019-018.pngである」という意味になります。
     なお、-pや-cは、ほとんどの場合はなくても大丈夫なことが多いと思われます。
     これだけの情報を大量のファイルごとに手入力することは現実的に不可能ですので、私の場合はdirコマンドを使って出力した結果をファイルに書き出して、秀丸の正規表現による置換により修正してバッチファイルを作成しました。



    バッチファイルを実行する

     バッチファイルを実行するとその結果がコマンドプロンプトに表示されます。数十秒に1ファイル程度の間隔で逐次処理されていきます。

    gdriveを利用するためのAPIには使用制限がある

     あまりにも大量のファイルを処理しようとした場合には、途中でGoogleのAPIを受け付けるサーバーが応答を行わなくなり、バッチ処理はサーバーの応答待ちの状態になります。
     そのようなときにはCTRL-Cを押して、バッチ処理を中止してください。
     経験的には、そこから24時間程度経過すれば、GoogleのAPIを受け付けるサーバーが再びファイルのアップロードを受け付けるようになります。バッチファイルから処理が終わっている行を削除して、修正後のバッチファイルを24時間後に実行してください。
     また、アップロードしようとする画像ファイルが2MBを超えている場合、GoogleのAPIを受け付けるサーバーが応答を行わなくなります。
     事前に2MBを超える画像ファイルがないかを探して、2MBを超えていたらimagemagickなどのツールを使って2MB以下にしてください。

    OCR変換後のGoogleドキュメントをWordファイルとしてダウンロードする

     gdriveにはダウンロードを行う機能があり、これを利用する方法と、ブラウザ上から複数のファイルやフォルダを選択してまとめてダウンロードする方法の2つがあります。gdriveの場合はGoogleドキュメントのIDを取得する手間がかかりますので、一般的にはブラウザ上でダウンロードすることになるでしょう。

    ダウンロードしたWordファイルからテキストファイルを抽出する

     バッチファイルで処理する場合、Windowsではxdoc2txtというツールがあります。その他の環境でも同じようなツールがありますので検索してみてください。

    OCR変換の精度について

     表の中の文字はほぼ文字化けしていて使えないと思ってください。また、行の途中で英字が入る場合も文字化けの原因となります。

    情報処理技術者試験の問題文をOCR処理

     大量の文書を処理した結果の実例として、情報処理技術者試験の問題文をOCR処理した結果を公表します。

    情報処理技術者試験過去問

    平成16年度春期 平成16年度秋期 平成17年度春期 平成17年度秋期 平成18年度春期 平成18年度秋期 平成19年度春期 平成19年度秋期 平成20年度春期 平成20年度秋期 平成21年度春期 平成21年度秋期 平成22年度春期 平成22年度秋期 平成23年度特別 平成23年度秋期 平成24年度春期 平成24年度秋期 平成25年度春期 平成25年度秋期 平成26年度春期 平成26年度秋期 平成27年度春期 

     問題文のPDFから画像ファイルを作成しました。画像ファイルの数は12,824でした。