是否可以在Python中提取带有空格的pdf?

时间:2013-06-16 04:38:39

标签: python pypdf pdftotext

在创建工具以使用java和pdfbox提取工具后,我一直在尝试使用Python提取pdf。

虽然Java实现对于相同的pdf是成功的,但我一直在努力在python中做同样的事情,因为pdfminer和pypdf以及pypdf2都无法逐行提取pdf。特别是,pdfminer pdf2txt出于某种奇怪的原因将pdf拆分为3列,然后逐行读取。

我得到的最接近的是使用a stack overflow question的实现,遗憾的是它没有保留空格。鉴于我的变量都有数字,我无法以文本形式恢复它们。

鉴于此,是否有可能逐行在Python中提取带有空格的pdf?

2 个答案:

答案 0 :(得分:0)

在我的情况下,以下工作:

from pdf2image import convert_from_path
import pytesseract

images = convert_from_path("sample.pdf")
for i,image in enumerate(images,start=1):
    image.save(f"./images/page_{i}.jpg","JPEG")

print(pytesseract.image_to_string("./images/page_1.jpg"))

这里的想法是首先将 PDF 转换为图像,然后从中读取文本。这种方法保留了空格。

依赖:

  • conda install -c conda-forge tesseract
  • conda 安装 pdf2image
  • conda 安装 pytesseract

答案 1 :(得分:0)

您可以使用 Aspose.PDF Cloud SDK for Python 从 PDF 中逐行提取文本以及空格。目前支持从云存储(Amazon S3、DropBox、Google Drive Storage、Google Cloud Storage、Windows Azure Storage、FTP Storage和Aspose default Cloud Storage)处理文件。

这是示例代码:

import os
import asposepdfcloud
from asposepdfcloud.apis.pdf_api import PdfApi

# Get Client Id and Client Secret from https://cloud.aspose.com
pdf_api_client = asposepdfcloud.api_client.ApiClient(
    app_key='xxxxxxxxxxxxxxxxxx',
    app_sid='xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx')

pdf_api = PdfApi(pdf_api_client)
temp_folder="Temp"

#upload PDF file to storage
data_file = "C:/Temp/02_pages.pdf"
remote_name="02_pages.pdf"
pdf_api.upload_file(temp_folder + '/' + remote_name,data_file)

llx = 0
lly = 0
urx = 0
ury = 0

response = pdf_api.get_text(remote_name, llx, lly, urx, ury, folder= temp_folder)

for i in response.text_occurrences.list:
    print(i.text)

P.S:我是 Aspose 的开发者布道者