📝

pythonでPDFをテキスト化する【Azure AI Document Intelligence】

2024/05/18に公開

やること

前回Azure portal上でAzure AI Document Intelligenceを使ってOCRを行いました。
https://zenn.dev/headwaters/articles/7865873c67b0ec
今回は、pythonで行う方法を紹介します。

参考資料

https://zenn.dev/microsoft/articles/try-form-recognizer

https://learn.microsoft.com/ja-jp/python/api/azure-ai-formrecognizer/azure.ai.formrecognizer.documentanalysisclient?view=azure-python

前提

  • Azure AI Document Intelligenceを構築済みであること
  • Python 3.9.6

実装手順

  1. 以下のコマンドを実行し、ライブラリーをinstallする
pip install azure-ai-formrecognizer azure-core
  1. Azure AI Document IntelligenceのエンドポイントとAPIキーを取得する
import time
from azure.ai.formrecognizer import DocumentAnalysisClient
from azure.core.credentials import AzureKeyCredential
from datetime import datetime

# 設定を読み込み
endpoint = "<エンドポイント>"
api_key = "<APIキー>"

# クライアントを作成
client = DocumentAnalysisClient(endpoint=endpoint, credential=AzureKeyCredential(api_key))

# ファイルを読み込んで
file_path = "<ファイルパス>"
with open(file_path, "rb") as file:
    print(f"{datetime.now()}: アップロード開始")
    
    # 分析開始
    poller = client.begin_analyze_document("prebuilt-document", file)
    
    # ステータスが完了になるまでポーリング
    while not poller.done():
        print(f"{datetime.now()}: Waiting...")
        time.sleep(3)
    
    # 結果を取得
    result = poller.result()

print(f"{datetime.now()}: 完了!!")

  1. 結果を見たいので、先程のコードに追加し再度実行
import time
from azure.ai.formrecognizer import DocumentAnalysisClient
from azure.core.credentials import AzureKeyCredential
from datetime import datetime



# 設定を読み込み
endpoint = "<エンドポイント>"
api_key = "<APIキー>"

# クライアントを作成
client = DocumentAnalysisClient(endpoint=endpoint, credential=AzureKeyCredential(api_key))

# ファイルを読み込んで
file_path = "<ファイルパス>"
with open(file_path, "rb") as file:
    print(f"{datetime.now()}: アップロード開始")
    
    # 分析開始
    poller = client.begin_analyze_document("prebuilt-document", file)
    
    # ステータスが完了になるまでポーリング
    while not poller.done():
        print(f"{datetime.now()}: Waiting...")
        time.sleep(3)
    
    # 結果を取得
    result = poller.result()
    print("result:", result) # 追加

print(f"{datetime.now()}: 完了!!")

結果がターミナル上に表示されたことを確認

ヘッドウォータース

Discussion