・Google Drive APIを使った読み取りプログラム
Google Drive API導入に必要なライブラリをインストールします(Anaconda環境)。
conda install google-auth
conda install google-auth-oauthlib
conda install -c conda-forge google-auth-httplib2
conda install -c conda-forge google-api-python-client
・Google Drive APIで画像読み取りを行うコード
import os
import pickle
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload
def upload_and_ocr(file_path):
# OAuth 2.0 クライアントIDのJSONファイルを指定
creds = None
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(client_path, ['https://www.googleapis.com/auth/drive'])
creds = flow.run_local_server(port=0)
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
service = build('drive', 'v3', credentials=creds)
file_metadata = {
'name': os.path.basename(file_path),
'mimeType': 'application/vnd.google-apps.document'
}
media = MediaFileUpload(file_path, mimetype='image/jpeg', resumable=True)
file = service.files().create(body=file_metadata, media_body=media, fields='id').execute()
doc_file = service.files().export(fileId=file.get('id'), mimeType='text/plain').execute()
print(doc_file.decode('utf-8'))
return doc_file.decode('utf-8')
上記のプログラムを起動させようとしたら、動きませんでした。
ブラウザで以下のような表示が出ました。
アクセスをブロック: Google API OCR は Google の審査プロセスを完了していません
Google API OCR は Google の審査プロセスを完了していません。このアプリは現在テスト中で、デベロッパーに承認されたテスターのみがアクセスできます。アクセス権があると思われる場合は、デベロッパーにお問い合わせください。
Google API OCR のデベロッパーの場合は、エラーの詳細をご確認ください。
エラー 403: access_denied
エラーをクリックしての表示は以下です。
エラー 403: access_denied
リクエストの詳細: access_type=offline response_type=code redirect_uri=http://localhost:53239/ state=FIgxOSyZ7NVeLtSeemjkVnhx9ZbKGp client_id=xxxx-th5s02f42sa8t80um3se3gv1mtubm8pt.apps.googleusercontent.com scope=https://www.googleapis.com/auth/drive
上記については、Google Cloudにログインして、公開ステータスを「本番環境」にしたら動きました。