目次
例 2
summary
ホームページ バックエンド開発 Python チュートリアル Python で PDF ファイルから表形式データをクロールする方法 (コード例)

Python で PDF ファイルから表形式データをクロールする方法 (コード例)

Oct 24, 2018 pm 05:15 PM
python

この記事の内容は、Python が PDF ファイルから表形式データをクロールする方法 (コード例) に関するものです。一定の参考値があります。困っている友人が参照できます。お役に立てれば幸いです。

この記事では、少し異なるクローラーを紹介します。
従来、Web ページは HTML、CSS、JavaScript コードで記述されているため、当社のクローラーはインターネットからデータをクロールしていましたが、Web ページ内のさまざまなデータをクロールするための成熟したテクノロジーが多数存在します。今回、クロールする必要があるドキュメントは PDF ファイルです。この記事では、Python の Camlot モジュールを使用して PDF ファイルから表形式のデータをクロールする方法を説明します。
日常生活や仕事において、PDF ファイルは間違いなく最も一般的に使用されるファイル形式の 1 つであり、教科書やコースウェアから契約書や計画文書に至るまで、このファイル形式を誰もが目にすることがあります。しかし、PDF ファイルから表を抽出する方法は大きな問題です。 PDF にはテーブルを表す内部表現がないためです。このため、表形式のデータを分析のために抽出することが困難になります。では、PDF からテーブル データをクロールするにはどうすればよいでしょうか?
答えは、Python の Camlot モジュールです。
Camlot は、PDF ファイルから誰でも簡単に表形式のデータを抽出できる Python 用のモジュールです。次のコマンドを使用して、camelot モジュールをインストールできます (インストールには長い時間がかかります):

pip install camelot-py
ログイン後にコピー

Camelot モジュールの公式ドキュメントのアドレスは: https://camelot-py.readthedoc... 。
以下では、camelot モジュールを使用して PDF ファイルから表形式データをクロールする方法を示します。

例 1

まず、簡単な例を見てみましょう: eg.pdf. 次のように、ファイル全体には 1 ページのみがあり、このページにはテーブルが 1 つだけあります。

Python で PDF ファイルから表形式データをクロールする方法 (コード例)

次の Python コードを使用して、PDF ファイル内の表を抽出します:

import camelot

# 从PDF文件中提取表格
tables = camelot.read_pdf('E://eg.pdf', pages='1', flavor='stream')

# 表格信息
print(tables)
print(tables[0])
# 表格数据
print(tables[0].data)
ログイン後にコピー

出力結果は次のとおりです:

<tablelist>
<table>
[['ID', '姓名', '城市', '性别'], ['1', 'Alex', 'Shanghai', 'M'], ['2', 'Bob', 'Beijing', 'F'], ['3', 'Cook', 'New York', 'M']]<p>分析コード、camelot.read_pdf() は、テーブルからデータを抽出する Camlot の関数です。入力パラメータは、PDF ファイルのパス、ページ番号 (ページ)、テーブルの解析方法 (2 つの方法があります) です。ストリームと格子)。テーブル解析メソッドのデフォルトのメソッドはラティスであり、ストリームメソッドはデフォルトで PDF ページ全体をテーブルとして解析します。解析されたページ内の領域を指定する必要がある場合は、table_area パラメータを使用できます。 <br> Camlot モジュールの便利な点は、抽出されたテーブル データを pandas、csv、JSON、HTML に直接変換する関数 (tables[0].df、tables[0].to_csv() function wait など) を提供していることです。出力された CSV ファイルを例に挙げます。 </p>
<pre class="brush:php;toolbar:false">import camelot

# 从PDF文件中提取表格
tables = camelot.read_pdf('E://eg.pdf', pages='1', flavor='stream')

# 将表格数据转化为csv文件
tables[0].to_csv('E://eg.csv')
ログイン後にコピー

取得された CSV ファイルは次のとおりです。

Python で PDF ファイルから表形式データをクロールする方法 (コード例)

例 2

例 2 では、PDF ページの特定の領域にある表データを抽出します。 PDF ファイルのページ (部分) は次のとおりです。

Python で PDF ファイルから表形式データをクロールする方法 (コード例)

ページ全体から唯一の表を抽出するには、テーブルの場所。 PDF ファイルの座標系は画像とは異なり、左下隅の頂点を原点とし、右に x 軸、上に y 軸をとります。次の Python コードを使用してページ全体を出力できます:

import camelot

# 从PDF中提取表格
tables = camelot.read_pdf('G://Statistics-Fundamentals-Succinctly.pdf', pages='53', \
                          flavor='stream')

# 绘制PDF文档的坐标,定位表格所在的位置
tables[0].plot('text')
ログイン後にコピー

出力結果は次のとおりです:

UserWarning: No tables found on page-53 [stream.py:292]
ログイン後にコピー

コード全体ではテーブルが見つかりません。これは、ストリーム メソッドが PDF ページ全体を処理するためです。デフォルトではテーブルとして設定されるため、テーブルは見つかりません。ただし、描画されたページ座標のイメージは次のとおりです。

Python で PDF ファイルから表形式データをクロールする方法 (コード例)

以前の PDF ページを注意深く比較すると、上部の座標が一致していることが簡単にわかります。テーブルに対応する領域の左隅の座標は (50,620)、右下隅の座標は (500,540) です。 table_area パラメータを read_pdf() 関数に追加します。完全な Python コードは次のとおりです:

import camelot

# 识别指定区域中的表格数据
tables = camelot.read_pdf('G://Statistics-Fundamentals-Succinctly.pdf', pages='53', \
                          flavor='stream', table_area=['50,620,500,540'])

# 绘制PDF文档的坐标,定位表格所在的位置
table_df = tables[0].df

print(type(table_df))
print(table_df.head(n=6))
ログイン後にコピー

出力結果は次のとおりです:

<class>
         0               1                2           3
0  Student  Pre-test score  Post-test score  Difference
1        1              70               73           3
2        2              64               65           1
3        3              69               63          -6
4        …               …                …           …
5       34              82               88           6</class>
ログイン後にコピー

summary

PDFページ 表を作成する際には、領域を指定するパラメータの他に、上付きや下付き、セルの結合などのパラメータがあります。詳しい使い方はcamelot公式ドキュメントWebサイトをご参照ください:https://camelot -py.readthedoc....

以上がPython で PDF ファイルから表形式データをクロールする方法 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

テンプレートのメリットとデメリットは何ですか? テンプレートのメリットとデメリットは何ですか? May 08, 2024 pm 03:51 PM

テンプレートのメリットとデメリットは何ですか?

Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表 Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表 Jul 01, 2024 am 07:22 AM

Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表

Deepseek Xiaomiをダウンロードする方法 Deepseek Xiaomiをダウンロードする方法 Feb 19, 2025 pm 05:27 PM

Deepseek Xiaomiをダウンロードする方法

わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます May 06, 2024 pm 03:52 PM

わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する May 06, 2024 pm 04:43 PM

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する

golang 関数のデバッグと分析の完全ガイド golang 関数のデバッグと分析の完全ガイド May 06, 2024 pm 02:00 PM

golang 関数のデバッグと分析の完全ガイド

どうやって彼にdeepseekに尋ねますか どうやって彼にdeepseekに尋ねますか Feb 19, 2025 pm 04:42 PM

どうやって彼にdeepseekに尋ねますか

評価関数の保存方法 評価関数の保存方法 May 07, 2024 am 01:09 AM

評価関数の保存方法

See all articles