この記事では、python に関する関連知識を提供します。主に、pdfplumber モジュールのインストール、PDF の読み込みなど、pdfplumber による PDF の読み取りと Excel への書き込みに関する関連問題を紹介します。実践的な操作方法など、皆様のお役に立てれば幸いです。
推奨学習: python ビデオ チュートリアル
1. Python 操作 PDF 13 の大規模ライブラリの比較
PDF ( Portable Document Format) は、オペレーティング システム間でのドキュメントの配布を容易にするポータブル ドキュメント形式です。 PDF ドキュメントは標準形式に従っているため、PDF ドキュメントを操作できるツールは数多くあり、Python も例外ではありません。
Python で動作する PDF モジュールの比較表は次のとおりです。
この記事では主に pdfplumber
PDF コンテンツの抽出に焦点を当てます。テキスト (位置、フォント、色など) や形状 (長方形、直線、曲線) として機能し、テーブルを解析する機能も備えています。
2. pdfplumber モジュール
他のいくつかの Python ライブラリは、ユーザーが PDF から情報を抽出するのに役立ちます。大まかに言うと、pdfplumber は、次の機能を組み合わせることで他の PDF 処理ライブラリと区別されます。
- 各 PDF オブジェクトに関する詳細情報に簡単にアクセスできます
- 高レベルのカスタマイズ可能な用途に使用されます。テキストとテーブルを抽出するメソッド
- 緊密に統合されたビジュアル デバッグ
- クロップ ボックスによるオブジェクトのフィルタリングなど、その他の便利なユーティリティ機能
pip install pdfplumberガイド パッケージ:
import pdfplumberケース PDF スクリーンショット (2 ページは切り取られていません):
pdfplumber.open("path/filename.pdf", パスワード = "test", laparams = { "line_overlap": 0.7 })
- password
: パスワードで保護された PDF をロードするには、パスワード キーワード パラメータを渡してください
- laparams
: 設定するにはレイアウト解析パラメータを pdfminer.six のレイアウト エンジンに渡し、laparams キーワード引数
import pdfplumberwith pdfplumber.open("./1.pdf") as pdf: print(pdf) print(type(pdf))出力結果:
<pdfplumber.pdf.pdf><class></class></pdfplumber.pdf.pdf>3. pdfplumber .PDF クラス
pdfplumber.PDF クラスは単一の PDF を表し、2 つの主要なプロパティがあります:
Description | |
---|---|
PDF からメタデータ | キー/値ペア 辞書を取得します情報。通常、「CreationDate」、「ModDate」、「Producer」などが含まれます。
|
pdfplumber.Page インスタンスを含むリストを返します。各インスタンスは PDF # の各ページの情報を表します。 |
: import pdfplumberwith pdfplumber.open("./1.pdf") as pdf:
print(pdf.metadata)
実行結果:
{'Author': 'wangwangyuqing', 'Comments': '', 'Company': '', 'CreationDate': "D:20220330113508+03'35'", 'Creator': 'WPS 文字', 'Keywords': '', 'ModDate': "D:20220330113508+03'35'", 'Producer': '', 'SourceModified': "D:20220330113508+03'35'", 'Subject': '', 'Title': '', 'Trapped': 'False'}
import pdfplumberwith pdfplumber.open("./1.pdf") as pdf: print(len(pdf.pages))
実行結果:2
4. pdfplumber.Page class
このクラスは pdfplumber の中核です。ほとんどの操作はこのクラスを中心に展開します。このクラスには次の属性があります:
最初のページは 1 から始まり、2 番目のページは 2 など、連続したページ番号。類推して。
|
.width |
ページの幅。
|
.height |
ページの高さ。
|
.objects/.chars/.lines/.rects/.curves/.figures/.images |
これらの各プロパティは、リストには、ページに埋め込まれた各オブジェクトの辞書が含まれています。詳細については、以下の「オブジェクト」を参照してください。
|
#一般的に使用されるメソッドは次のとおりです |
メソッド名
| #.extract_words()# すべての単語とその関連情報を返します |
.extract_tables() |
ページのテーブルを抽出します |
.to_image() |
ビジュアル デバッグに使用する場合は、PageImage クラスのインスタンスを返します。 |
.close() |
デフォルトでは、ページ オブジェクトは、再処理を避けるためにレイアウトとオブジェクト情報をキャッシュします。ただし、これらのキャッシュされたプロパティは、大きな PDF を解析するときに大量のメモリを必要とする可能性があります。このメソッドを使用すると、キャッシュをフラッシュしてメモリを解放できます。 |
<p><strong>1. 读取第一页宽度、高度等信息</strong></p>
<pre class="brush:php;toolbar:false">import pdfplumberwith pdfplumber.open("./1.pdf") as pdf:
first_page = pdf.pages[0] # pdfplumber.Page对象的第一页
# 查看页码
print('页码:', first_page.page_number)
# 查看页宽
print('页宽:', first_page.width)
# 查看页高
print('页高:', first_page.height)</pre>
<p>运行结果:</p>
<pre class="brush:php;toolbar:false">页码: 1页宽: 595.3页高: 841.9</pre>
<p><strong>2. 读取文本第一页</strong></p>
<pre class="brush:php;toolbar:false">import pdfplumberwith pdfplumber.open("./1.pdf") as pdf:
first_page = pdf.pages[0] # pdfplumber.Page对象的第一页
text = first_page.extract_text()
print(text)</pre>
<p>运行结果:</p>
<pre class="brush:php;toolbar:false">店铺名 价格 销量 地址
小罐茶旗舰店 449 474 安徽
零趣食品旗舰店 6.9 60000 福建
天猫超市 1304 3961 上海
天猫超市 139 25000 上海
天猫超市 930 692 上海
天猫超市 980 495 上海
天猫超市 139 100000 上海
三只松鼠旗舰店 288 25000 安徽
红小厨旗舰店 698 1767 北京
三只松鼠旗舰店 690 15000 安徽
一统领鲜旗舰店 1098 1580 上海
新大猩食品专营9.8 7000 湖南.......舰店
蟹纳旗舰店 498 1905 上海
三只松鼠坚果at茶 188 35000 安徽
嘉禹沪晓旗舰店 598 1517 上海</pre>
<p><strong>3. 读取表格第一页</strong></p>
<pre class="brush:php;toolbar:false">import pdfplumberimport xlwtwith pdfplumber.open("1.pdf") as pdf:
page_one = pdf.pages[0] # PDF第一页
table_1 = page_one.extract_table() # 读取表格数据
# 1. 创建Excel表对象
workbook = xlwt.Workbook(encoding='utf8')
# 2. 新建sheet表
worksheet = workbook.add_sheet('Sheet1')
# 3. 自定义列名
col1 = table_1[0]
# print(col1)# ['店铺名', '价格', '销量', '地址']
# 4. 将列属性元组col写进sheet表单中第一行
for i in range(0, len(col1)):
worksheet.write(0, i, col1[i])
# 5. 将数据写进sheet表单中
for i in range(0, len(table_1[1:])):
data = table_1[1:][i]
for j in range(0, len(col1)):
worksheet.write(i + 1, j, data[j])
# 6. 保存文件分两种格式
workbook.save('test.xls')</pre>
<p>运行结果:<br><br><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/067/f7d6a4b0467bb6fa76b6dd3a885230ec-5.png?x-oss-process=image/resize,p_40" class="lazy" alt="Python サンプル pdfplumber PDF の読み込みと Excel への書き込みの詳細な説明"></p>
<h2 id="三-实战操作">三、实战操作</h2>
<h2 id="提取单个PDF全部页数">1. 提取单个PDF全部页数</h2>
<p>测试代码:</p>
<pre class="brush:php;toolbar:false">import pdfplumberimport xlwtwith pdfplumber.open("1.pdf") as pdf:
# 1. 把所有页的数据存在一个临时列表中
item = []
for page in pdf.pages:
text = page.extract_table()
for i in text:
item.append(i)
# 2. 创建Excel表对象
workbook = xlwt.Workbook(encoding='utf8')
# 3. 新建sheet表
worksheet = workbook.add_sheet('Sheet1')
# 4. 自定义列名
col1 = item[0]
# print(col1)# ['店铺名', '价格', '销量', '地址']
# 5. 将列属性元组col写进sheet表单中第一行
for i in range(0, len(col1)):
worksheet.write(0, i, col1[i])
# 6. 将数据写进sheet表单中
for i in range(0, len(item[1:])):
data = item[1:][i]
for j in range(0, len(col1)):
worksheet.write(i + 1, j, data[j])
# 7. 保存文件分两种格式
workbook.save('test.xls')</pre>
<p>运行结果(上面得没截全):<br><br><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/067/941942fb9bbaa5f3b17838085f419345-6.png?x-oss-process=image/resize,p_40" class="lazy" alt="Python サンプル pdfplumber PDF の読み込みと Excel への書き込みの詳細な説明"></p>
<h2 id="批量提取多个PDF文件">2. 批量提取多个PDF文件</h2>
<p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/067/941942fb9bbaa5f3b17838085f419345-7.png?x-oss-process=image/resize,p_40" class="lazy" alt="Python サンプル pdfplumber PDF の読み込みと Excel への書き込みの詳細な説明"></p>
<p>测试代码:</p>
<pre class="brush:php;toolbar:false">import pdfplumber
import xlwt
import os
# 一、获取文件下所有pdf文件路径
file_dir = r'E:\Python学习\pdf文件'
file_list = []
for files in os.walk(file_dir):
# print(files)
# ('E:\\Python学习\\pdf文件', [],
# ['1.pdf', '1的副本.pdf', '1的副本10.pdf', '1的副本11.pdf', '1的副本2.pdf', '1的副本3.pdf', '1的副本4.pdf', '1的副本5.pdf', '1的副本6.pdf',
# '1的副本7.pdf', '1的副本8.pdf', '1的副本9.pdf'])
for file in files[2]:
# 以. 进行分割如果后缀为PDF或pdf就拼接地址存入file_list
if file.split(".")[1] == 'pdf' or file.split(".")[1] == 'PDF':
file_list.append(file_dir + '\\' + file)
# 二、存入Excel
# 1. 把所有PDF文件的所有页的数据存在一个临时列表中
item = []
for file_path in file_list:
with pdfplumber.open(file_path) as pdf:
for page in pdf.pages:
text = page.extract_table()
for i in text:
item.append(i)
# 2. 创建Excel表对象
workbook = xlwt.Workbook(encoding='utf8')
# 3. 新建sheet表
worksheet = workbook.add_sheet('Sheet1')
# 4. 自定义列名
col1 = item[0]
# print(col1)# ['店铺名', '价格', '销量', '地址']
# 5. 将列属性元组col写进sheet表单中第一行
for i in range(0, len(col1)):
worksheet.write(0, i, col1[i])
# 6. 将数据写进sheet表单中
for i in range(0, len(item[1:])):
data = item[1:][i]
for j in range(0, len(col1)):
worksheet.write(i + 1, j, data[j])
# 7. 保存文件分两种格式
workbook.save('test.xls')</pre>
<p>运行结果(12个文件,一个文件50行总共600行):<br><br><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/067/941942fb9bbaa5f3b17838085f419345-8.png?x-oss-process=image/resize,p_40" class="lazy" alt="Python サンプル pdfplumber PDF の読み込みと Excel への書き込みの詳細な説明"></p>
<p>推荐学习:<a href="https://www.php.cn/course/list/30.html" target="_blank">python视频教程</a></p> |
以上がPython サンプル pdfplumber PDF の読み込みと Excel への書き込みの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
