<目次>
(1) Azure Blob Storage上にあるPDFファイルをテキスト変換する方法
やりたいこと
(1-0) STEP0:前提条件
(1-1) STEP1:Pythonモジュールの準備
(1-2) STEP2:環境構築
(1-3) STEP3:プログラムの実行
(1) Azure Blob Storage上にあるPDFファイルをテキスト変換する方法
やりたいこと
(1-1) STEP0:前提条件
(1-1) STEP1:Pythonモジュールの準備
●STEP1-1:①azurestorage_pdf_to_text.py
import io import os from dotenv import load_dotenv from azure.storage.blob import BlobServiceClient from azure.ai.formrecognizer import DocumentAnalysisClient from azure.core.credentials import AzureKeyCredential # 環境変数読み込み load_dotenv() form_recognizer_end_point = os.environ.get('FORM_RECOGNIZER_END_POINT') form_recognizer_key = os.environ.get('FORM_RECOGNIZER_KEY') storage_account_name = os.environ.get('STORAGE_ACCOUNT_NAME') storage_account_key = os.environ.get('STORAGE_ACCOUNT_KEY') container_name = os.environ.get('CONTAINER_NAME') # PDFファイルの解析(文字データ化) def analyze_general_documents(stream): """ binaryファイルを解析し、記載されている文字列を抽出します。 """ # DocumentAnalysisClientクラスのインスタンスを作成(Azure Form Recognizerに接続する) # →Form Recognizerのサービスを使える様にする document_analysis_client = DocumentAnalysisClient( endpoint=form_recognizer_end_point, credential=AzureKeyCredential(form_recognizer_key) ) # ドキュメントの解析 poller = document_analysis_client.begin_analyze_document("prebuilt-document", stream) # 戻り値: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 return final_text def main(): # BLOB名称 # blob_name = '[ご自身のファイル名].pdf' blob_name = 'test.pdf' # BlobServiceClientオブジェクトを作成 blob_service_client = BlobServiceClient( account_url=f"https://{storage_account_name}.blob.core.windows.net/", credential=storage_account_key ) blob_client = blob_service_client.get_blob_client(container_name, blob_name) # Blob StorageからPDFファイルをバイトストリームとして読み込む stream = io.BytesIO() blob_client.download_blob().download_to_stream(stream) stream.seek(0) # Azure Form Recognizerに接続し、PDFを文字データに変換 result = analyze_general_documents(stream) print(result) if __name__ == "__main__": main()
●STEP1-2:②.env:環境変数
FORM_RECOGNIZER_END_POINT = "https://xxxxxx.cognitiveservices.azure.com/" FORM_RECOGNIZER_KEY = "xxxxx" STORAGE_ACCOUNT_NAME='xxxxxx' STORAGE_ACCOUNT_KEY='xxxxxx' CONTAINER_NAME='xxxxxxx'
●STEP1-3:③requirements.txt:必要なパッケージのインストール
python-dotenv==1.0.0 azure-ai-formrecognizer==3.2.1 azure-core==1.26.4 azure-storage-blob==12.16.0
(1-2) STEP2:環境構築
●STEP2-1:仮想環境の構築
> python -m venv .venv
●STEP2-2:仮想環境のアクティベート
> .\.venv\Scripts\activate
●STEP2-3:仮想環境のアクティベート
> pip install -r requirements.txt
(1-3) STEP3:プログラムの実行
(構文)
> .\.venv\Scripts\python.exe [ファイルパス]\[モジュール名].py
> .\.venv\Scripts\python.exe .\pdf_to_text\azurestorage_pdf_to_text.py
→PDFの文字内容をテキスト化できている事が確認できました。