Portable Document Format (PDF) ファイルは、ドキュメントを電子的に共有するために一般的に使用されます。 個人も企業も、PDF ファイルを使用して情報を共有しています。 多くの場合、さらに処理するために PDF ファイルから情報を抽出する必要があります。 ただし、PDF ファイルからテキストを抽出することは、特に文書に複雑な書式設定とレイアウトが含まれている場合は困難な場合があります。 幸いなことに、これを行うにはいくつかの方法があります。
ここでは、Python を使用して PDF からテキストを抽出するために最も一般的に使用される方法を提供します。 Python は、効率的な PDF テキスト抽出を可能にするいくつかのライブラリで構成されています。
この記事では、PDF ファイルからテキストを抽出するためのいくつかの一般的な Python ライブラリと、PDF からの段階的なテキスト抽出プロセスについて説明します。
PDF 処理用の Python ライブラリ
Python には、PDF ファイルなどの非構造化データ ソースを効果的に処理する、適切に統合されたライブラリがいくつかあります。 PDF 処理用のいくつかの Python ライブラリのリストを次に示します。
- PyPDF2: これは、PDF ファイルのページの分割、マージ、トリミング、および変換を支援できる PDF 用の Python ライブラリです。 pyPDF2 また、PDF ファイルからテキストを抽出することもできます。
- PyMuPDF: PyMuPDF は、MuPDF C ライブラリの Python ラッパーです。 Python で PDF ファイルの読み取り、書き込み、および操作を行うことができます。 また、PDF ドキュメントのメタデータにアクセスし、テキストと画像を抽出し、PyMuPDF を使用して PDF ドキュメントを復号化できます。
- レポートラボ: これは、PDF ファイルの作成と操作に使用できるオープンソースの Python ライブラリです。 PDF ドキュメントを最初から作成するための高レベル API を提供し、画像とフォントの埋め込みをサポートします。
- PDF2dox: PDFファイルからPyMuPDFライブラリを利用してデータを抽出するPythonライブラリです。
PDF からテキストへのコンバーターを使用して、複雑な PDF をテキスト形式に即座に変換します。 無料でお試しください。
開発環境のセットアップ
PDF からのテキスト抽出の手順について説明する前に、開発環境をセットアップし、テキストを抽出するために必要な Python ライブラリをインストールすることが不可欠です。
- Pythonをインストールします。 まだインストールしていない場合は、システムに Python をインストールする必要があります。 から最新バージョンの Python をダウンロードできます。 こちら.
- pipをインストールします。 Python に pip がインストールされているかどうかを確認するには、次を実行します。
py -m ensurepip --default-pip
pip が自動的に実行されない場合は、ダウンロードします こちら 次のコードを実行して、インストールまたはアップグレードします
pip.python get-pip.py
- 必要なライブラリをインストールします。 PDF ファイルを操作するには、任意の Python ライブラリをインストールします。 ここでは、よく使われるライブラリ PyPDF2 をインストールします。 インストールするには、次のコマンドを実行します。
pip install PyPDF2
Python と必要なライブラリをインストールすると、開発環境が設定されます。 任意のテキスト エディターまたは IDE を使用して、Visual Studio Code、PyCharm、Sublime Text などの Python コードを記述できます。
PyPDF2 Python ライブラリを使用してファイルを抽出します。
入力 PDF:
# 必要なモジュールのインポート |
出力:
それでは、各コードを個別に理解しましょう。
- リーダー = PdfReader('nanonets.pdf')
PyPDF2 モジュールから、PDFReader クラスのオブジェクトを作成しました。 pdf ファイルへのパスの必要な位置引数を取ります。
- print(len(reader.pages))
pages プロパティは、PageObjects のリストを提供します。 ここでは、組み込みの len() Python 関数を使用して、pdf ファイルのページ数を取得できます。
- ページ = リーダー.ページ[0]
ページ インデックスを利用して、特定の pdf ファイル ページを取得することもできます。 リストのインデックスは Python では 0 から始まるため、このコマンドはファイルの最初のページを表示します。
- テキスト = page.extract_text()
印刷(テキスト)
このコマンドを使用して、pdf ページからテキストを抽出します。
抽出されたテキストを前処理してクリーンアップおよび正規化する
ストップワードの削除、小文字化、句読点の削除、ステミング、レンマタイゼーションなどのさまざまな前処理手法を使用して、Python で抽出されたテキストをクリーンアップおよび正規化します。
入力: Python は、データ分析や機械学習に使用される人気のあるプログラミング言語です。 習得が容易で、さまざまなアプリケーション用の幅広いライブラリがあります。
コード:
テキスト= 「Python は、データ分析と機械学習に使用される人気のあるプログラミング言語です。 習得が容易で、さまざまなアプリケーション用の幅広いライブラリがあります。」 |
出力: [「パイソン」「ポピュラー」「プログラミング」「言語」「中古」「データ」「分析」「機械」「学習」「簡単」「学ぶ」「広い」範囲、「ライブラリ」、「さまざまな」、「アプリケーション」]
この手順では、「is」、「a」、「for」、「and」、「it」、「has」などのストップ ワードを削除し、テキスト内のすべての単語を小文字にしました。
抽出したテキストをファイルまたはデータベースに保存する
次のコードを実行します。
開いた('extracted_text.txt', 「w」) as f: |
このコードは、という名前のファイルを開きます 抽出されたテキスト.txt 書き込みモードで。 の f.write() メソッドは、前処理されたテキストをファイルに書き込みます。 単語のリストを変換します クリーンテキスト 単語を空白文字 (' ') で結合して文字列に変換し、結果の文字列をファイルに書き込みます。
その結果、前処理されたテキストは次の名前のファイルに保存されます。 抽出されたテキスト.txt 現在の作業ディレクトリにあります。
PDF からテキストへのコンバーターを使用して、複雑な PDF をテキスト形式に即座に変換します。 無料でお試しください。
いくつかの高度な手法を使用して、テキスト抽出の精度を向上させることができます。 ここにいくつかのテクニックがあります:
- 光学式文字認識(OCR): OCR は、スキャンした画像を機械でエンコードされたテキストに変換するプロセスです。 OCR を使用して、画像またはスキャンしたページを含む PDF ファイルからテキストを抽出できます。 Tesseract、Google Cloud Vision、Amazon Textract など、いくつかの OCR エンジンが利用可能です。
- 前処理技術: 前処理技術には、実際の抽出プロセスの前に PDF ファイルを操作することが含まれます。 これには、抽出プロセスの精度に影響を与える可能性のあるノイズ、スキュー、およびその他の歪みを除去するための、歪み除去、ノイズ除去、しきい値処理などの手法が含まれます。
- レイアウト分析: これには、テキスト ブロック、表、画像など、PDF ファイルのさまざまな要素を識別して分類することが含まれます。 この情報により、ドキュメントの構造が識別されるため、テキスト抽出の精度が向上します。
- 機械学習ツール: などのいくつかのテキスト抽出ツール ナノネット、機械学習技術を使用して PDF ファイルからテキストを正確に抽出します。
Python でパフォーマンスを最適化し、メモリ使用量を削減するためのヒント
Python でメモリを効果的に管理することは複雑になる可能性があり、Python のデータ構造とオブジェクトを理解する必要があります。 Python でコードを実行する際のパフォーマンスを最適化し、メモリ使用量を削減するためのヒントをいくつか紹介します。
1. 組み込みの Python 関数とライブラリを使用する
組み込みの Python 関数を使用することは、コードを高速化する効果的な方法です。 これらの関数は最適化され、パフォーマンスが十分にテストされているため、必要に応じてコードに組み込むことをお勧めします。
これらの関数は、高性能言語である C で実行されるため高速です。 これらの関数の例には、max、min、all、map などがあります。
2. Pytorch DataLoader を利用する
大規模なデータセットのトレーニングは、メモリを大量に消費する可能性があります。 PyTorch の DataLoader を使用すると、データセット全体からデータの複数のミニバッチを作成できるようになるため、この問題を解決できます。 使用可能なメモリによって決定される複数のサンプルを含むことができる各ミニバッチは、モデルにシームレスに読み込まれるため、大規模なデータセットの効率的なトレーニングが可能になります。
3.ループでリスト内包表記を使用する
Python では、ループは一般的ですが、リスト内包表記は、新しいリストを作成するためのより簡潔で高速な方法を提供します。 Python リストに要素を追加するには、append メソッドよりも優れています。
4. import ステートメントのオーバーヘッド
Python では、インポート ステートメントの配置がコードのパフォーマンスとメモリ使用量に影響を与える可能性があります。 関数の外部にパッケージをインポートすると、コードの実行が速くなる可能性がありますが、関数の内部にパッケージをインポートするよりも多くのメモリが必要になる場合があります。 Python で import ステートメントを配置する場所を決定する際には、パフォーマンスとメモリ使用量のトレードオフを考慮することが重要です。
5. データチャンク
小さなバッチでのデータのチャンク化または読み込みは、Python で大規模なデータセットを操作する際のメモリ エラーを防ぐのに役立つ手法です。 多くの場合、一度にすべてのデータが必要になるわけではなく、すべてを XNUMX 回のバッチでロードしようとすると、メモリの制限によりプログラムがクラッシュする可能性があります。 データを小さなチャンクで処理することにより、これらのメモリ エラーを回避し、必要に応じて結果を保存することができます。 したがって、メモリ関連の問題を防ぐために、データの処理と分析ではデータのチャンク化が一般的です。
6. 文字列の連結
Python で文字列を連結する一般的な XNUMX つの方法は、'+' 演算子または join() メソッドを使用することです。 「+」演算子が広く使用されていますが、文字列を連結するには join() メソッドの方が効果的で高速です。 主な理由は、各ステップで「+」演算子が新しい文字列を作成し、古い文字列をコピーするのに対し、join() メソッドの動作が異なるため、連結が高速になるためです。
PDF からテキストへのコンバーターを使用して、複雑な PDF をテキスト形式に即座に変換します。 無料でお試しください。
取り除く
Python でメモリ エラーを処理するのは難しい場合がありますが、メモリの使用を最適化し、メモリ オーバーフローを防ぐためのさまざまな方法が存在します。 最初のステップは、問題の主な理由を特定し、適用可能なメモリ最適化方法を適用することです。 問題が解決しない場合は、関連するプロセスを最適化するか、外部データベース サービスを使用して操作を小さなチャンクに分割することができます。
これらのヒントとテクニックを使用すると、メモリ使用量を最適化し、Python で大規模なデータセットを操作する際のメモリ関連の問題を回避できます。 Python ライブラリは PDF ファイルからテキストを抽出する便利な方法を提供しますが、次のようなテキスト抽出用の他の自動化ツールを検討する価値があります。 ナノネット。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- Platoblockchain。 Web3メタバースインテリジェンス。 知識の増幅。 こちらからアクセスしてください。
- 情報源: https://nanonets.com/blog/extract-text-from-pdf-file-using-python/
- :は
- $UP
- 1
- 7
- 8
- a
- 加速する
- アクセス
- 精度
- 正確にデジタル化
- 高度な
- 影響を及ぼす
- すべて
- 許可
- ことができます
- 既に
- Amazon
- アマゾンテキストラック
- 分析
- および
- API
- 適用可能な
- 適用
- 適切な
- です
- 引数
- 記事
- AS
- At
- 試みる
- 自動化
- 自動的に
- 利用できます
- BE
- なぜなら
- より良いです
- の間に
- ブロック
- 壊れた
- 内蔵
- ビジネス
- by
- 缶
- 例
- 原因となる
- 挑戦
- 文字
- 文字認識
- チェック
- class
- クラウド
- コード
- コマンドと
- 一般に
- 複雑な
- 考えると
- 含む
- 含まれています
- 便利
- 基本
- Crash
- 作ります
- 作成した
- 作成
- 創造
- 作物
- 電流プローブ
- データ
- データ分析
- データ処理
- データベース
- データセット
- 決定する
- 解読する
- 決定
- 開発
- 異なります
- 話し合います
- ドキュメント
- ドキュメント
- ダウン
- ダウンロード
- 各
- エディタ
- 効果的な
- 効果的に
- 効率的な
- 電子的に
- 要素は
- enable
- 有効にする
- エンジン
- 英語
- 全体
- 環境
- エラー
- 特に
- 本質的な
- すべてのもの
- 例
- 実行
- エキス
- スピーディー
- 速いです
- 少数の
- File
- 名
- フォロー中
- フォント
- 形式でアーカイブしたプロジェクトを保存します.
- 幸いにも
- 無料版
- から
- function
- 機能
- さらに
- 取得する
- 受け
- GIF
- 与える
- でログイン
- Googleクラウド
- ハンドル
- 持ってる
- 助けます
- こちら
- ハイレベル
- ハイパフォーマンス
- 認定条件
- How To
- しかしながら
- HTTPS
- 識別
- 画像
- 影響
- import
- 重要
- インポート
- 改善します
- in
- include
- 含ま
- 含めて
- 組み込む
- index
- 個人
- 情報
- install
- インストール
- 巻き込む
- 問題
- 問題
- IT
- 参加
- 言語
- 大
- 最新の
- レイアウト
- LEARN
- 学習
- ライブラリ
- 図書館
- ような
- 制限
- リスト
- リスト
- 負荷
- ローディング
- 機械
- 機械学習
- メイン
- make
- 作る
- 管理する
- 操作する
- 多くの
- 地図
- マックス
- メモリ
- マージ
- 方法
- メソッド
- モード
- モジュール
- 他には?
- 最も
- の試合に
- 名前付き
- 必要
- 新作
- ノイズ
- 数
- オブジェクト
- オブジェクト
- OCR
- of
- 提供
- 古い
- on
- 開いた
- オープンソース
- 操作
- オペレータ
- 最適化
- 最適化
- 最適化
- 最適化
- その他
- その他
- 外側
- パッケージ
- ページ
- path
- パフォーマンス
- 持続する
- 場所
- プラトン
- プラトンデータインテリジェンス
- プラトデータ
- 人気
- 可能
- 防ぐ
- プロセス
- ラボレーション
- 処理
- 演奏曲目
- プログラミング
- 財産
- 提供します
- は、大阪で
- Python
- パイトーチ
- 範囲
- 読む
- リーダー
- 理由
- 認識
- 推奨される
- 縮小
- 関連する
- 削除します
- 削除済み
- 除去
- 必要とする
- の提出が必要です
- 結果
- 結果として
- 結果
- ラン
- ランニング
- s
- Save
- シームレス
- サービス
- セッションに
- いくつかの
- シェアする
- シェアリング
- 斜め
- 小さい
- より小さい
- So
- 溶液
- 一部
- ソース
- スペース
- 特定の
- split
- 開始
- ステートメント
- 文
- 手順
- ステップ
- Force Stop
- 構造
- 研究
- そのような
- サポート
- 取る
- テクニック
- 遺言
- それ
- したがって、
- ボーマン
- ヒント
- 〜へ
- トークン
- 豊富なツール群
- トレーニング
- 最適化の適用
- わかる
- 理解する
- アップグレード
- us
- 使用法
- つかいます
- 活用する
- さまざまな
- Ve
- バージョン
- ビジョン
- W
- 仕方..
- 方法
- かどうか
- which
- while
- ワイド
- 広い範囲
- 広く
- 意志
- Word
- 言葉
- 仕事
- ワーキング
- 作品
- 価値
- 書きます
- You
- あなたの
- ゼファーネット