python - Python PDF水管工多数据读取
问题描述
我正在使用 PDF Plumber 从 PDF 发票中提取数据。当我加载多个 PDF 时出现问题。所有文件都上传到代码中,但是当我使用文本提取器(PDF Plumber)时,它只给我下载最后一个 pdf 的数据。PDF 始终相同,因此 startPhrase 和 endPhrase 相同。只是数字变了。有没有人有同样的问题?这是代码的一部分。
我从电子邮件下载文件
然后有文本提取器
def extractWordsFromPdfContentsBetweenPhrases(page, startPhrase, endPhrase): text = page.extract_text() contents = (text[text.find(start)+len(start):text.rfind(end)]) splitter = string.strip().split() return splitter
然后我在函数中使用提取器,将特定数据放入 DataFrame 中。
def readDataFromSavedMails():
for filename in os.listdir(workingFolder):
if filename.endswith(".pdf"):
ap = (workingFolder + filename)
with pdfplumber.open(ap) as pdf:
splitterFirstPage = extractWordsFromPdfContentsBetweenPhrases(pdf.pages[1],'Údaje o měřicím zařízení','Zúčtované částky celkem')
splitterSecondPage = extractWordsFromPdfContentsBetweenPhrases(pdf.pages[1],'VYÚČTOVÁNÍ SPOTŘEBY ELEKTŘINY KE DNI','Údaje o měřicím zařízení')
splitterThirdPage = extractWordsFromPdfContentsBetweenPhrases(pdf.pages[0],'Nedoplatek ve výši','prosíme uhraďte do data splatnosti')
dateOD = splitterFirstPage[10]
dateDO = splitterFirstPage[11]
spotreba = splitterFirstPage[33]
cena = splitterThirdPage[0]
ean = splitterSecondPage[7]
return pd.DataFrame({'EAN':[ean],'DatumOD': [dateOD], 'DatumDo': [dateDO], 'Spotřeba v kWh':[spotreba],'Cena v CZK':[cena]})
数据框中的数据仅来自最后一个 pdf,而不是所有下载的。谢谢您的帮助
解决方案
重症监护病房
`import glob
from tqdm.auto import tqdm
for current_pdf_file in tqdm(glob.glob("Path/*.pdf")):
with pdfplumber.open(current_pdf_file) as my_pdf:
# do other things here?`
推荐阅读
- javascript - 如何在 Electron 15 中导入菜单
- c++ - 当对象在 switch case 中超出范围时访问冲突
- python - Python kivy 入口点 inflateValidate 无法位于动态链接库 C:\Windows\SYSTEM32\libpng16-16.dll
- react-native - 如何让键盘在搜索时显示搜索图标?(反应原生)
- google-chrome-extension - 在 Manifest V3 chrome 扩展背景页面上运行 Socket
- javascript - 单击javascript中的按钮时显示表格数据行
- java - Oracle 存储日期的 TIMESTAMP 数据类型是否根据本地时区进行调整?
- python - 重新创建着色神经网络代码
- javascript - TS2322:类型'(数据:TicketFullDTO)=> 承诺
' 不可分配给类型 'FormEventHandler ' - c# - 从 MongoDB Compass Windows 应用程序导出和导入具有 UUID 的文档