📜  构建应用程序以使用Python从 PDF 中提取 URL 和元数据

📅  最后修改于: 2022-05-13 01:55:21.736000             🧑  作者: Mango

构建应用程序以使用Python从 PDF 中提取 URL 和元数据

PDF(便携式文档格式)是 Adobe 开发的最常用的独立于平台的文件格式,用于展示文档。 Python有很多与 PDF 相关的包,其中之一是pdfx模块。 pdfx模块用于从给定的 PDF 或 PDF URL 中提取 URL、元数据和纯文本。

特征:

  • 从给定的 PDF 中提取参考和元数据。
  • 检测 pdf、URL、arxiv 和 DOI 引用。
  • 快速、并行下载所有引用的 PDF。
  • 检查断开的链接(使用 -c 标志)。
  • 输出为文本或 JSON(使用 -j 标志)。
  • 提取 PDF 文本(使用 –text 标志)。
  • 使用命令行工具或Python包。
  • 与Python 2 和 3 兼容。
  • 适用于本地和在线 pdf。

入门:

首先,我们需要安装pdfx模块,在终端中运行以下代码。

pip install pdfx

方法:

  • 导入pdfx模块。
  • 使用pdfx.PDFx()方法读取 PDF 文件。
  • 使用get_metadata()方法获取元数据。
  • 使用get_references_as_dict()方法获取 URL。

执行:

步骤 1:导入模块并阅读 PDF 文件。

Python3
# import module
import pdfx
  
# reading pdf file
pdf = pdfx.PDFx("geeksforgeeks.pdf")
  
# display
print(pdf)


Python3
pdf.get_metadata()


Python3
pdf.get_references_as_dict()


Python3
# import modules
from tkinter import *
import pdfx
  
  
# user defined funtion
def get_info():
  
    pdf = pdfx.PDFx(str(e1.get()))
    meta.set(pdf.get_metadata())
    url.set(pdf.get_references_as_dict())
  
  
# object of tkinter
# and background set for light grey
master = Tk()
master.configure(bg='light grey')
  
  
# Variable Classes in tkinter
meta = StringVar()
url = StringVar()
  
  
# Creating label for each information
# name using widget Label
Label(master, text="PDF or PDF-URL : ", bg="light grey").grid(row=0, sticky=W)
Label(master, text="Meta information :", bg="light grey").grid(row=3, sticky=W)
Label(master, text="URL information :", bg="light grey").grid(row=4, sticky=W)
  
  
# Creating lebel for class variable
# name using widget Entry
Label(master, text="", textvariable=meta,
      bg="light grey").grid(row=3, column=1, sticky=W)
Label(master, text="", textvariable=url, bg="light grey").grid(
    row=4, column=1, sticky=W)
  
  
e1 = Entry(master, width=100)
e1.grid(row=0, column=1)
  
  
# creating a button using the widget
# Button that will call the submit function
b = Button(master, text="Show", command=get_info, bg="Blue")
b.grid(row=0, column=2, columnspan=2, rowspan=2, padx=5, pady=5,)
  
  
mainloop()
  
# this code belongs to Satyam kumar (ksatyam858)


输出:


这意味着pdfx.PDFx对象在您记忆中的0x1c189244a88这个位置创建。

第 2 步:从 PDF 获取元数据。

蟒蛇3

pdf.get_metadata()

输出:

第 3 步:获取 URL 表单 PDF。

蟒蛇3

pdf.get_references_as_dict()

输出:

{'url': ['https://www.geeksforgeeks.org/cookie-policy/',
  'https://www.geeksforgeeks.org/privacy-policy/',
  'https://www.geeksforgeeks.org/',
  'https://www.geeksforgeeks.org/optparse-module-in-python/']}

使用tkinter从 PDF 中提取 URL 和元数据的应用程序下面的脚本将上述方法实现到图形用户界面中。

蟒蛇3

# import modules
from tkinter import *
import pdfx
  
  
# user defined funtion
def get_info():
  
    pdf = pdfx.PDFx(str(e1.get()))
    meta.set(pdf.get_metadata())
    url.set(pdf.get_references_as_dict())
  
  
# object of tkinter
# and background set for light grey
master = Tk()
master.configure(bg='light grey')
  
  
# Variable Classes in tkinter
meta = StringVar()
url = StringVar()
  
  
# Creating label for each information
# name using widget Label
Label(master, text="PDF or PDF-URL : ", bg="light grey").grid(row=0, sticky=W)
Label(master, text="Meta information :", bg="light grey").grid(row=3, sticky=W)
Label(master, text="URL information :", bg="light grey").grid(row=4, sticky=W)
  
  
# Creating lebel for class variable
# name using widget Entry
Label(master, text="", textvariable=meta,
      bg="light grey").grid(row=3, column=1, sticky=W)
Label(master, text="", textvariable=url, bg="light grey").grid(
    row=4, column=1, sticky=W)
  
  
e1 = Entry(master, width=100)
e1.grid(row=0, column=1)
  
  
# creating a button using the widget
# Button that will call the submit function
b = Button(master, text="Show", command=get_info, bg="Blue")
b.grid(row=0, column=2, columnspan=2, rowspan=2, padx=5, pady=5,)
  
  
mainloop()
  
# this code belongs to Satyam kumar (ksatyam858)

输出: