Loading [MathJax]/extensions/tex2jax.js

Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Azure Microsoft

PDFをテキスト化する方法(Azure Cognitive Service)

投稿日:2023年7月8日 更新日:

 

<目次>

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

(1) PDFをテキスト化する方法(Azure Cognitive Service)

やりたいこと

・PDFファイルをテキスト化する

目次にもどる

概要

・Azure Form Recognizerを使用してPDFからテキストを抽出

目次にもどる

STEP0:前提条件

(前提)

STEP1:Azureのリソース作成

Cognitive Services または Form Recognizer リソースを作成する必要あり(以下の例はCognitive Service)
 
・①「Form Recognizer」を「+作成」
(図110)

・②必要情報を入力して「確認と作成」→「作成」
(図111)
(図112)

・③「キー」と「エンドポイント」を控える
(図113)

 

STEP2:必要なパッケージのインストール

・①Visual Studio Codeのターミナルから、以下のコマンドを実行してパッケージをインストール。
 
  1. > pip install azure-ai-formrecognizer
  2. > pip install azure-core
 
(図211)
(図212)

STEP3:サンプルプログラムの実行

(サンプルプログラム)
  1. import logging
  2. from azure.ai.formrecognizer import DocumentAnalysisClient
  3. from azure.core.credentials import AzureKeyCredential
  4.  
  5. """
  6. 概要
  7. PDFファイルを文字データに変換する
  8. 引数
  9. _io.BufferedReader: PDFファイル
  10. 戻り値
  11. str: PDFの文字データ
  12. """
  13. END_POINT = "https://xxxxxxxxxxxx.cognitiveservices.azure.com/"
  14. KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxx"
  15.  
  16. def analyze_general_documents(binary_file, logger):
  17. """
  18. binaryファイルを解析し、記載されている文字列を抽出します。
  19. """
  20. # DocumentAnalysisClientクラスのインスタンスを作成
  21. # →Form Recognizerのサービスを使える様にする
  22. document_analysis_client = DocumentAnalysisClient(endpoint=END_POINT, credential=AzureKeyCredential(KEY))
  23. # ドキュメントの解析
  24. # →ドキュメントの取得方法は「ファイルから」と「URLから」の2通りがある
  25. # (1)ファイル形式のドキュメント
  26. poller = document_analysis_client.begin_analyze_document("prebuilt-document", binary_file)
  27. # (2)URLからドキュメントを取得
  28. # poller = document_analysis_client.begin_analyze_document_from_url("prebuilt-document", docUrl)
  29. # 戻り値:AsyncLROPoller のインスタンス
  30. # →poller オブジェクトで result() を呼び出して、 を AnalyzeResult返します。
  31. result = poller.result()
  32.  
  33. # 結果格納用の配列
  34. text_of_doc = []
  35. # 結果は「ページ単位」に分かれている
  36. for page in result.pages:
  37. # 更にその中で「行単位」に分かれる
  38. for line_idx, line in enumerate(page.lines):
  39. # 行単位に「単語」の情報を抽出
  40. words = line.get_words()
  41. for word in words:
  42. # リストに追加
  43. text_of_doc.append(word.content)
  44.  
  45. # 配列の中身を、1つの変数に格納しなおす
  46. final_text = ""
  47. for text in text_of_doc:
  48. final_text += text
  49. logger.debug(f"PDF解析結果: {final_text}")
  50.  
  51. return final_text
  52.  
  53. # スクリプトとして実行する際、Pythonは __name__ 変数に "__main__" という値を設定します。
  54. # 一方で、他のモジュールからインポートされた場合は、モジュール名が __name__ 変数に設定されます。
  55. if __name__ == "__main__":
  56. # ログメッセージの出力フォーマットを指定
  57. # asctime: ログレコードが作成された日時
  58. # name: ロガーの名前
  59. # levelname: ログレベルの名前
  60. # message: ログメッセージの内容
  61. logging.basicConfig(format='=== : %(asctime)s - %(name)s - %(levelname)s - %(message)s',level=logging.DEBUG)
  62. # 現在のモジュールの名前と同じ名前のロガーを取得する
  63. logger = logging.getLogger(__name__)
  64.  
  65. # PDFファイルの読み込み
  66. binary_file = open("[ファイルパス].pdf", "rb")
  67. # PDFファイルの解析(文字データ化)
  68. result = analyze_general_documents(binary_file, logger)
 
・テストデータイメージ(※冒頭の2ページのみ)
(図312)

・実行結果
(図313)

(図311)ドキュメントの取得方法は「ファイルから」と「URLから」の2通りある

(参考)

 

Adsense審査用広告コード


Adsense審査用広告コード


-Azure, Microsoft
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Azureの可用性セットとは?概要や設定画面の例も交えてご紹介

  <目次> (1) Azureの可用性セットとは?概要や設定画面の例も交えてご紹介  (1-1) Azureの可用性セットとは?  (1-2) Azureの可用性セットを実現する仕組み ( …

Azure DevOpsのビルドパイプラインの例

  <目次> Azure DevOpsのビルドパイプラインの例  やりたいこと/概要  STEP0:前提条件  STEP1:Gitのリポジトリを用意する  STEP2:プロジェクトのビルド& …

Azureの無料アカウントが期限切れした場合のアップグレード手順について

  <目次> (1) Azureの無料アカウントが期限切れした場合のアップグレード手順について  (1-1) 無料アカウントアップグレードの概要  (1-2) アップグレード手順  (1-3 …

Azureの「NSG」と「Azure Firewall」の違いについて

  <目次> (1) Azureの「NSG」と「Azure Firewall」の違いについて  (1-1) Azure Firewallとは?  (1-2) Azure Firewallの設 …

Azure SQLServerが想定より高い?値段を抑えるための工夫についてご紹介

  <目次> (1) Azure SQLServerが想定より高い?値段を抑えるための工夫についてご紹介  (1-1) やりたいこと  (1-2) 概要  (1-3) 設定手順  (1-4) …

  • English (United States)
  • 日本語
S