Pythonでgoogle-drive-ocrを使用し文字認識を行う

Pythonでgoogle-drive-ocrを使用し文字認識を行ってみます。GoogleのDrive API v3を利用したOCR(光学文字認識)。

google-drive-ocrライブラリ・モジュールを用いますが、このライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■Google CloudPlatformでプロジェクトを作成する

google-drive-ocrを使用し文字認識を行うためには、Google CloudPlatformでプロジェクトを作成する必要があるので、Googleアカウントを登録・取得し、GoogleCloudPlatform(https://console.cloud.google.com/apis/dashboard)にアクセスします。

GoogleCloudPlatform(https://console.cloud.google.com/getting-started)に、初回アクセスすると、GoogleCloudPlatformのウインドウが表示されますので、ウインドウ内の「国」から「日本」を選択し、「利用規約」の「私は、GoogleCloudPlatformの利用規約、および適用されるサービスとAPIの利用規約に同意します。」のチェックボックスをチェックを入れます。チェック後、「最新情報をメールで通知」の定期的なメール受信をチェックするかどうか決めて、その後「同意して続行」ボタンをクリックします。

クリックすると、ダッシュボードが表示されますので、「プロジェクトの選択」をクリックします。

クリックすると、「プロジェクトの選択」のウインドウが表示されます。ウインドウ内の「新しいプロジェクト」をクリックします。

クリックすると、「新しいプロジェクト」のページに移動します。ページ内の「プロジェクト名」にプロジェクトの名前を入力します。入力後「場所」を設定しますが、今回は「組織なし」とします。

設定後、「作成」ボタンをクリックします。

クリックすると、プロジェクトの作成が開始されます。ダッシュボードの「通知」に「プロジェクトを作成」という表示がされ、緑のチェックマークが表示されます。これで作成は完了となります。

■Google Drive APIの有効化

クリック後、ダッシュボードが表示されます。ダッシュボード上部の「プロダクトとリソースの検索」をクリックし、「Drive API」と入力し、「Drive API」のページにある「有効する」ボタンをクリックし、APIを有効にします。この時、作成したプロジェクト名を選択し、プロジェクト内でAPIを有効にする形になります。

■OAuth 同意画面(アプリ登録の編集)

有効化後、「認証情報」のページ内の「同意画面を設定」か、ダッシュボードの「OAuth 同意画面」をクリックします。

クリックすると、「OAuth 同意画面」のページに移動します。移動後、「User Type」で「外部」を選択し、「作成」ボタンをクリックします。

クリックすると、「アプリ登録の編集」ページに移動します。ページ内のアプリ情報で「アプリ名」と「ユーザーサポートメール」を入力、もしくは選択します。「アプリのロゴ」は設定しません。

ページ下に移動し、「アプリのドメイン」は設定しません。

さらにページ下に移動し、「承認済みドメイン」は設定せずに、「デベロッパーの連絡先情報」で連絡先としてメールアドレスを入力します。

入力後、「保存して次へ」ボタンをクリックします。

クリックすると、「アプリ登録の編集」の「スコープ」の項目に移動します。移動しますが、「スコープ」の設定は行わなくて問題ありません。

問題ありますので、ページ下に移動し、「保存して次へ」ボタンをクリックします。

クリックすると、「アプリ登録の編集」の「テストユーザー」の項目に移動します。移動後、「ADD USERS」ボタンをクリックします。クリックすると「ユーザーを追加」というウインドウが表示されますので、入力欄にメールアドレスを入力します。入力後「追加」ボタンをクリックします。クリックすると、ユーザーが追加されますので、追加された状態で「保存して次へ」ボタンをクリックします。

クリックすると、「アプリ登録の編集」の「概要」の項目に移動します。移動後、ページ内で編集した内容を確認します。

確認後、ページ下の「ダッシュボードに戻る」ボタンをクリックします。クリックするとダッシュボードへ戻ります。

■認証情報を作成

戻った後に、認証情報を作成しますので、GoogleCloudPlatformのダッシュボードの左側メニューから「認証情報」をクリックします。クリックすると、「認証情報」のページが表示されますので、上部の「認証情報の作成」をクリックします。

クリックすると、プルダウンメニューが表示されますので、「OAuth クライアント ID」をクリックします。

クリックすると、「OAuth クライアント IDの作成」ページが表示されますので、「アプリケーションの種類」をクリックします。

クリックすると、プルダウンメニューが表示されますので、メニューから「デスクトップアプリ」を選択します。

選択すると、「名前」の入力欄が表示されますので、入力されているOAuth 2.0 クライアントの名前に問題がなければ「作成」ボタンをクリックします。問題があれば、名前を変更します。

ボタンをクリックすると、OAuth 2.0 クライアントの作成が開始され、しばらくすると「OAuth クライアントを作成しました」というウインドウが表示されます。表示後、「OK」ボタンをクリックし、ウインドウを閉じます。

ウインドウを閉じると、「認証情報」のページ内の「OAuth 2.0 クライアント ID」の項目に作成したOAuth クライアントの名前が表示されます。表示されている右側に矢印のマークがありますので、こちらをクリックします。クリックすると、ウインドウが表示されますので、「JSONをダウンロード」をクリックします。

クリックすると、Webブラウザ上でjson形式のファイルのダウンロードが開始されます。しばらくすると、Webブラウザで指定されている保存場所に「client_secret_***.apps.googleusercontent.com.json」といったファイルがダウンロードされます。

ダウンロード後、今回はファイルを「C:\Users\user_\test(フォルダパス)」へ移動しておきます。移動後、「client_secret_***.apps.googleusercontent.com.json」というファイル名から分かりやすいように「client_secret.json」という名前に変更します。

■文字認識を行うための画像ファイルを用意する

変更後、OCR(光学文字認識)を用い、文字認識を行うために、画像ファイルを用意します。

今回用意したのは、「test.png」というpng形式の画像ファイルです。このファイルが置かれている場所は「C:\Users\user_\test(フォルダパス)」です。

■google-drive-ocrを使用し文字認識を行う

画像ファイルの用意ができましたので、google-drive-ocrを使用し文字認識を行うスクリプトを書いていきます。

■コード

from google_drive_ocr.application import GoogleOCRApplication

app = GoogleOCRApplication(r'C:\Users\user_\test\client_secret.json')

app.perform_ocr(r'C:\Users\user_\test\test.png')

文字認識を行うために、google_drive_ocr.applicationを呼び出します。

その後、appという変数を作成し、その中でGoogleOCRApplication()を使用します。括弧内には、引数,パラメータとして、ダウンロードしたJSONファイルの名前と置かれている場所(フォルダパス)を渡します。これでGoogleのDrive API v3を利用しOCR(光学文字認識)を実行することができます。

OCRを用いて文字認識を行いますので、app.perform_ocr()を使用します。括弧内には、引数,パラメータとして、今回用意したテキストが追加された画像ファイルを渡します。これで文字認識を行うことができます。

■実行・検証

このスクリプトを「google_ocr.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、OCR(光学文字認識)の実行結果は出力されません。

出力されませんが、今回用意した画像ファイルが置かれている場所を確認すると、「test.google.txt」というテキストファイルが生成されていることが確認できました。

確認後、テキストファイルを開くと、今回用意した画像ファイルに含まれるテキストが、GoogleのDrive API v3を利用したOCR(光学文字認識)を用いたことで認識され、認識されたテキストをファイルに書き込み、出力させることができました。

コメント

タイトルとURLをコピーしました