<目次>
(1) PDFをテキスト化する方法(Azure Cognitive Service)
やりたいこと
概要
STEP0:前提条件
STEP1:Azureのリソース作成
STEP2:必要なパッケージのインストール
STEP3:サンプルプログラムの実行
(1) PDFをテキスト化する方法(Azure Cognitive Service)
やりたいこと
概要
STEP0:前提条件
STEP1:Azureのリソース作成


STEP2:必要なパッケージのインストール
> pip install azure-ai-formrecognizer > pip install azure-core

STEP3:サンプルプログラムの実行
import logging
from azure.ai.formrecognizer import DocumentAnalysisClient
from azure.core.credentials import AzureKeyCredential
"""
概要
PDFファイルを文字データに変換する
引数
_io.BufferedReader: PDFファイル
戻り値
str: PDFの文字データ
"""
END_POINT = "https://xxxxxxxxxxxx.cognitiveservices.azure.com/"
KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxx"
def analyze_general_documents(binary_file, logger):
"""
binaryファイルを解析し、記載されている文字列を抽出します。
"""
# DocumentAnalysisClientクラスのインスタンスを作成
# →Form Recognizerのサービスを使える様にする
document_analysis_client = DocumentAnalysisClient(endpoint=END_POINT, credential=AzureKeyCredential(KEY))
# ドキュメントの解析
# →ドキュメントの取得方法は「ファイルから」と「URLから」の2通りがある
# (1)ファイル形式のドキュメント
poller = document_analysis_client.begin_analyze_document("prebuilt-document", binary_file)
# (2)URLからドキュメントを取得
# poller = document_analysis_client.begin_analyze_document_from_url("prebuilt-document", docUrl)
# 戻り値:AsyncLROPoller のインスタンス
# →poller オブジェクトで result() を呼び出して、 を AnalyzeResult返します。
result = poller.result()
# 結果格納用の配列
text_of_doc = []
# 結果は「ページ単位」に分かれている
for page in result.pages:
# 更にその中で「行単位」に分かれる
for line_idx, line in enumerate(page.lines):
# 行単位に「単語」の情報を抽出
words = line.get_words()
for word in words:
# リストに追加
text_of_doc.append(word.content)
# 配列の中身を、1つの変数に格納しなおす
final_text = ""
for text in text_of_doc:
final_text += text
logger.debug(f"PDF解析結果: {final_text}")
return final_text
# スクリプトとして実行する際、Pythonは __name__ 変数に "__main__" という値を設定します。
# 一方で、他のモジュールからインポートされた場合は、モジュール名が __name__ 変数に設定されます。
if __name__ == "__main__":
# ログメッセージの出力フォーマットを指定
# asctime: ログレコードが作成された日時
# name: ロガーの名前
# levelname: ログレベルの名前
# message: ログメッセージの内容
logging.basicConfig(format='=== : %(asctime)s - %(name)s - %(levelname)s - %(message)s',level=logging.DEBUG)
# 現在のモジュールの名前と同じ名前のロガーを取得する
logger = logging.getLogger(__name__)
# PDFファイルの読み込み
binary_file = open("[ファイルパス].pdf", "rb")
# PDFファイルの解析(文字データ化)
result = analyze_general_documents(binary_file, logger)
(図311)ドキュメントの取得方法は「ファイルから」と「URLから」の2通りある
(参考)