我一直在研究一个项目,其中我使用神经网络从pdf中提取表格数据,我成功检测表格并获取它们的坐标(x,y,宽度,高度),我一直在尝试使用pypdf2裁剪pdf隔离表格,但由于某种原因,裁剪永远不会符合预期的结果。运行推理后我得到这些坐标
[[5.0948269e+01、1.5970685e+02、1.1579385e+03、2.7092386e+02 9.9353129e-01]]
第 5 个数字是我的神经网络精度,我们可以安全地忽略它
但是在 pypdf2 中使用相同的坐标始终是关闭的
from PyPDF2 import PdfFileWriter, PdfFileReader
with open("mypdf.pdf", "rb") as in_f:
input1 = PdfFileReader(in_f)
output = PdfFileWriter()
numPages = input1.getNumPages()
for i in range(numPages):
page = input1.getPage(i)
page.cropBox.upperLeft = (5.0948269e+01,1.5970685e+02)
page.cropBox.upperLeft = (1.1579385e+03, 2.7092386e+02)
output.addPage(page)
with open("out.pdf", "wb") as out_f:
output.write(out_f)
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
谢谢 !
我想在pdf中绘制一个形状,例如矩形。我尝试过下面的代码,但它在 pdf 中添加文本。我怎样才能画它?
# Add text to Existing PDF using Python
from pyPdf import PdfFileWriter, PdfFileReader
import StringIO
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
packet = StringIO.StringIO()
# create a new PDF with Reportlab
can = canvas.Canvas(packet, pagesize=letter)
TXT="Sample Text"
can.drawString(300, 70, TXT) #coordinates (x,y)
can.save()
#move to the beginning of the StringIO buffer
packet.seek(0)
new_pdf = PdfFileReader(packet)
# read your existing PDF
existing_pdf = PdfFileReader(file("original.pdf", "rb"))
output = PdfFileWriter()
# add the "watermark" (which is the new …Run Code Online (Sandbox Code Playgroud) 我正在做最后一年的项目,所以我正在开发一个用户可以阅读 PDF 的网站。我添加了一些功能,例如将货币转换为本国货币。我在我的项目中使用flask和pymuPDF,我不知道如何修改pdf中的文本,有人可以帮助我解决这个问题吗?
我听说这里使用 pymuPDF 或 pypdf 可以工作,但我没有找到任何替换文本的解决方案。
我正在使用pypdf从pdf文件中提取文本.问题是不提取pdf文件中的表.我也尝试过使用pdfminer,但我遇到了同样的问题.
我搜索了我的问题,但在两个可用问题中没有得到我的答案
基本上我想遍历每个页面,因为我只想选择具有特定文本的页面。
我用过pyPdf。它几乎适用于我可以说的 90%,pdfs但有时它不会从页面中提取信息。
我使用了以下代码:
import pyPdf
extract = ""
pdf = pyPdf.PdfFileReader(open('filename.pdf', "rb"))
num_of_pages = pdf.getNumPages()
for p in range(num_of_pages):
ex = pdf.getPage(6)
ex = ex.extractText()
if re.search(r"to be held (at|on)",ex.lower()):
print 'yes'
print ex ,"\n"
extract = extract + ex + "\n"
continue
Run Code Online (Sandbox Code Playgroud)
上面的代码有效,但有时无法提取某些页面。
我也尝试使用pdfminer,但我找不到如何逐页迭代其中的 pdf。pdfminer返回pdf的整个文本。
我使用了以下代码:
def convert_pdf_to_txt(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = 'utf-8'
laparams = LAParams() …Run Code Online (Sandbox Code Playgroud) 我试图让 PyPDF2 根据下面的代码提取整个文档中的特定文本。它准确地提取了我需要的内容并消除了重复项,但它并没有为我提供每个页面的列表,它似乎只向我显示最后一页的文本。我究竟做错了什么?
#import PyPDF2 and set extracted text as the page_content variable
import PyPDF2
pdf_file = open('enme2.pdf','rb')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
#for loop to get number of pages and extract text from each page
for page_number in range(number_of_pages):
page = read_pdf.getPage(page_number)
page_content = page.extractText()
#initialize the user_input variable
user_input = ""
#function to get the AFE numbers from the pdf document
def get_afenumbers(Y):
#initialize the afe and afelist variables
afe = "A"
afelist = ""
x = …Run Code Online (Sandbox Code Playgroud) 所以我花了一个月的大部分时间来解决这个问题。我正在寻找一种方法,从由文件的 OCG(可选内容组)组织的矢量化 PDF 中提取几何元素(多段线、文本、弧线等),OCG 基本上是 PDF 图层。使用 PDFminer,我能够提取几何图形(LTCurves、LTTextBoxes、LTLines 等);使用 PyPDF2,我能够查看 PDF 中有多少个 OCG,尽管我无法访问与该 OCG 相关的几何图形。我在网上看到并尝试过一些黑客脚本可能能够解决这个问题,但无济于事。我什至求助于在文本编辑器中打开原始 PDF 数据,并半途而废地删除其中的部分内容,看看是否可以想出一些自定义解析技术来做到这一点,但同样无济于事。Adobe 的 PDF 手册充其量只是最少的,因此当我尝试创建解析器时这没有任何帮助。有谁知道这个问题的解决方案。
在这一点上,我愿意接受任何语言、使用任何操作系统的解决方案(尽管我更喜欢在 Windows 或 Linux 上使用 Python 3 的解决方案),只要它是开源/免费的。
这里有人能帮助结束这个黑暗的兔子洞吗?非常感激!
我在更新可填写 pdf 中的命名字段时遇到问题。我的代码如图所示:
from PyPDF2 import PdfFileReader, PdfFileWriter
reader = PdfFileReader("invoice_template.pdf")
page = reader.getPage(0)
data_dict = {
"business_name_1": "Consulting",
"customer_name": "company.io",
"customer_email": "example@icloud.com",
}
writer = PdfFileWriter()
writer.updatePageFormFieldValues(page, fields=data_dict)
writer.addPage(page)
with open("newfile.pdf", "wb") as fh:
writer.write(fh)
Run Code Online (Sandbox Code Playgroud)
myfile.getFormTextFields()我在调用之前和之后检查了字段字典updatePageFormFieldValues(),它们确实得到了更新。但是生成的 pdf 中没有任何字段值。不确定我做错了什么。我正在使用的 pdf 可以在这里找到
我一直在尝试从扫描的 PDF(带有不可选择文本的图像)中提取文本。
但是,我得到的输出不是人类可读的。
我想要包含 pdf 链接中的日期、发票号的信息(https://drive.google.com/file/d/1qQsqhlSKTZs-hlswrV8PIirR36896KXZ/view)。
请帮助我以纯文本形式提取和存储相同的内容。
import PyPDF2
from PIL import Image
pdf_reader = PyPDF2.PdfFileReader(r'document.pdf', 'rb')
page = pdf_reader.getPage(85)
if '/XObject' in page['/Resources']:
xobject = page['/Resources']['/XObject'].getObject()
for obj in xobject:
if xobject[obj]['/Subtype'] == '/Image':
size = (xobject[obj]['/Width'], xobject[obj]['/Height'])
data = xobject[obj]._data
print("*******", data)
print(xobject[obj]['/Filter'])
Run Code Online (Sandbox Code Playgroud) 我想使用 pyPDF 以编程方式编辑 PDF。目前,我正在努力解释各种 PDF 框(TrimBox、MediaBox 等)的尺寸。每个盒子有四个维度存储为四元组,例如:
TrimBox: 56.69 56.69 1040.31 751.18
Run Code Online (Sandbox Code Playgroud)
根据 PDF 规范,这些应该描述一个矩形,并且当然 (56.69, 56.69) 确定了该矩形的左上角。然而,(1040.31, 751.18) 是被解释为这个矩形的右下角,还是相对于左上角的向量?
显然,这个答案在排字工中是如此众所周知,以至于到目前为止我在任何地方都找不到明确的拼写。
我附上了一张图片来帮助展示我所做的事情。我正在尝试编写一个程序,将空白页添加到目录中具有奇数页数的所有 PDF 中。但是我似乎无法阅读目录中的所有 PDF。
我的脚本适用于单个 PDF,但我还有 1000 个 PDF 需要处理。为什么我无法阅读 user_input 目录中的所有 PDF?

代码在这里
from PyPDF2 import PdfFileReader, PdfFileWriter, PdfFileMerger
import os
user_input = input("Enter the path of your file: ")
files = os.listdir(user_input)
for file in files:
print(file)
pdfReader = PdfFileReader(open(files, 'rb'))
Run Code Online (Sandbox Code Playgroud) pypdf ×11
python ×8
pdf ×6
pdfminer ×2
python-2.7 ×2
flask ×1
matplotlib ×1
ocg ×1
pymupdf ×1
python-3.x ×1
regex ×1
shapes ×1