我正在嘗試獲取這些資料并將其轉換為 pandas 中的資料框:

我正在使用 camelot 并且它正在“作業”但是,我只使用此代碼獲得 2 列:
import camelot
tables = camelot.read_pdf('Inventory_Summary.pdf', flavor='stream')
print(tables[0])
正在發生的事情是它正在考慮左側 1 列中的所有內容,而涂黑的資訊是第 2 列中的唯一資訊
我只想將日期下方的資訊放入資料框中
您可以提供的任何幫助都很棒!
謝謝!
-littlejiver
uj5u.com熱心網友回復:
你有一個似乎是設定感興趣區域的理想表格源,你還應該有在 python 中使用 poppler pdftotext 的后備(我不使用)你沒有提供你的最小輸入來測驗所以很差類似的輸入我建議你在需要一個可靠的固定區域時可以做這樣的事情,最壞的情況是重新列印它作為你輸入的新 pdf。
所以這里有一個類似的糟糕來源(不是我的,所以無法控制頁面外裁剪的 pdf 資料,但如果需要,我可以更改寬度以裁剪隱藏的資料。

因此,這可能是螢屏上顯示的所需輸出(包括隱藏列),但可以輸出到文本檔案以添加(提取后)字符分隔,例如 csv 檔案或更簡單地作為純列文本匯入到 excel。

pdftotext -nopgbrk -x 0 -y 120 -W 1000 -H 300 -fixed 3.8 inventory.pdf -
可以pdftotext -h在任何相關命令列上看到 pdftotext 選項
uj5u.com熱心網友回復:
我就是這樣解決的...
import PyPDF2
import pandas as pd
import numpy as np
lines = []
sites = []
kinds = []
total_offqc_wip_inv = []
total_offqc_scale_inv = []
total_offqc_truck_inv = []
total_offqc_rail_inv = []
total_offqc_boat_inv = []
# creating a pdf file object
pdfFileObj = open('PDFs/Inventory_Summary.pdf', 'rb')
# creating a pdf reader object
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
count = pdfReader.numPages
# creating a page object
pageObj0 = pdfReader.getPage(0)
pageObj1 = pdfReader.getPage(1)
pageObj2 = pdfReader.getPage(2)
pageObj3 = pdfReader.getPage(3)
pageObj4 = pdfReader.getPage(4)
pageObj5 = pdfReader.getPage(5)
# extracting text from page
page0 = pageObj0.extractText().strip()
page1 = pageObj1.extractText().strip()
page2 = pageObj2.extractText().strip()
page3 = pageObj3.extractText().strip()
page4 = pageObj4.extractText().strip()
page5 = pageObj5.extractText().strip()
corrected_page0 = page0.split('07:43am')[ 1]
corrected_page1 = page1.split('07:43am')[ 1]
corrected_page2 = page2.split('07:43am')[ 1]
corrected_page3 = page3.split('07:43am')[ 1]
corrected_page4 = page4.split('07:43am')[ 1]
corrected_page5 = page5.split('07:43am')[ 1]
for line in page0.splitlines():
if 'Site' in line:
for word in line.split():
if word != 'Site':
sites.append(word)
if 'All Shifts' in line:
for word in line.split():
if word != 'All':
if word != 'Shifts':
kinds.append(word)
if 'Total OffQc WIP Inv' in line:
for word in line.split():
if word != 'Total':
if word != 'OffQc':
if word != 'WIP':
if word != 'Inv':
total_offqc_wip_inv.append(word)
if 'Total OffQc Scale Inv' in line:
for word in line.split():
if word != 'Total':
if word != 'OffQc':
if word != 'Scale':
if word != 'Inv':
total_offqc_scale_inv.append(word)
if 'Total OffQc Truck Inv' in line:
for word in line.split():
if word != 'Total':
if word != 'OffQc':
if word != 'Truck':
if word != 'Inv':
total_offqc_truck_inv.append(word)
for line in page1.splitlines():
if 'Total OffQc Rail Inv' in line:
for word in line.split():
if word != 'Total':
if word != 'OffQc':
if word != 'Rail':
if word != 'Inv':
total_offqc_rail_inv.append(word)
if 'Total OffQc Boat Inv' in line:
for word in line.split():
if word != 'Total':
if word != 'OffQc':
if word != 'Boat':
if word != 'Inv':
total_offqc_boat_inv.append(word)
for line in page3.splitlines():
if 'Site' in line:
for word in line.split():
if word != 'Site':
sites.append(word)
if 'All Shifts' in line:
for word in line.split():
if word != 'All':
if word != 'Shifts':
kinds.append(word)
if 'Total OffQc WIP Inv' in line:
for word in line.split():
if word != 'Total':
if word != 'OffQc':
if word != 'WIP':
if word != 'Inv':
total_offqc_wip_inv.append(word)
if 'Total OffQc Scale Inv' in line:
for word in line.split():
if word != 'Total':
if word != 'OffQc':
if word != 'Scale':
if word != 'Inv':
total_offqc_scale_inv.append(word)
if 'Total OffQc Truck Inv' in line:
for word in line.split():
if word != 'Total':
if word != 'OffQc':
if word != 'Truck':
if word != 'Inv':
total_offqc_truck_inv.append(word)
for line in page4.splitlines():
if 'Total OffQc Rail Inv' in line:
for word in line.split():
if word != 'Total':
if word != 'OffQc':
if word != 'Rail':
if word != 'Inv':
total_offqc_rail_inv.append(word)
if 'Total OffQc Boat Inv' in line:
for word in line.split():
if word != 'Total':
if word != 'OffQc':
if word != 'Boat':
if word != 'Inv':
total_offqc_boat_inv.append(word)
sites.append("Total")
d = np.column_stack([sites, kinds, total_offqc_wip_inv, total_offqc_scale_inv, total_offqc_truck_inv, total_offqc_rail_inv, total_offqc_boat_inv])
df = pd.DataFrame(d)
# closing the pdf file object
pdfFileObj.close()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/481830.html
上一篇:使用PyMuPDF將文本部分加粗
下一篇:通用PDF轉換器
