pdf2image路径中的Poppler



我正在尝试使用pdf2image,似乎我需要一个名为poppler:的东西

(sum_env) C:UsersantoiDocumentsProgrammingprojectssummarizer>python ocr.py -i fr13_idf.pdf
Traceback (most recent call last):
File "c:UsersantoiDocumentsProgrammingprojectssummarizersum_envlibsite-packagespdf2imagepdf2image.py", line 165, in __page_count
proc = Popen(["pdfinfo", pdf_path], stdout=PIPE, stderr=PIPE)
File "C:Python37libsubprocess.py", line 769, in __init__
restore_signals, start_new_session)
File "C:Python37libsubprocess.py", line 1172, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "ocr.py", line 53, in <module>
pdfspliterimager(image_path)
File "ocr.py", line 32, in pdfspliterimager
pages = convert_from_path("document-page%s.pdf" % i, 500)
File "c:UsersantoiDocumentsProgrammingprojectssummarizersum_envlibsite-packagespdf2imagepdf2image.py", line 30, in convert_from_path
page_count = __page_count(pdf_path, userpw)
File "c:UsersantoiDocumentsProgrammingprojectssummarizersum_envlibsite-packagespdf2imagepdf2image.py", line 169, in __page_count
raise Exception('Unable to get page count. Is poppler installed and in PATH?')
Exception: Unable to get page count. Is poppler installed and in PATH?

我试过这个链接,但下载的东西并没有解决我的问题。

pdf2image只是poppler的包装器(而不是推进器!),要使用该模块,您需要在机器上和路径中安装poppler utils。

该过程链接在项目的自述文件"如何安装"部分。

首先从这里下载Poppler,然后提取它。在代码部分,只需添加Poppler_path=r'C:\Program Files\Poppler-0.68.0\bin'(例如),如下

from pdf2image import convert_from_path
images = convert_from_path("mypdf.pdf", 500,poppler_path=r'C:Program Filespoppler-0.68.0bin')
for i, image in enumerate(images):
fname = 'image'+str(i)+'.png'
image.save(fname, "PNG")

现在结束了。有了这个技巧,不需要添加环境变量。如果你有任何问题,请告诉我。

这些pdf2image和pdftotext库后端需求是Poppler,所以你必须安装

"conda install-c conda forge poppler">

则该错误将被解决。如果它仍然对你不起作用,那么你可以跟随http://blog.alivate.com.au/poppler-windows/以安装此库。

pdf2image路径中的Poppler

使用pdf2image时,需要满足以下依赖项:

  1. 安装pdf2image

    pip安装pdf2image

  2. 安装python dateutil

    pip安装python dateutil

  3. 提升阀的安装

  4. 在环境变量(系统路径)中指定Poppler路径

在Windows上安装Poppler

  • 转到https://github.com/oschwartz10612/poppler-windows/releases/
  • 正在发布21.11.0-0最新版本21.11.0-0
  • 转到资产3
  • 下载版本-21.11.0-0.zip

将Poppler添加到路径

  • 将安装的Poppler添加到操作:C:\Users\UserName\Downloads\Release-21.11.0-0.zip
  • 将C:\Users\UserName\Downloads\Release-21.11.0-0.zip添加到系统环境变量中的变量路径

在代码中指定poppler路径

pages = convert_from_path(filepath, poppler_path=r"actualpoppler_path")

它是未正确安装的poppler。使用它,您可以获得正确的安装包。

sudo apt-get install poppler-utils

对于窗口;解决PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?:

  • 安装chocolateyhttps://chocolatey.org/install
  • 然后使用choco安装poppler:choco install poppler

如果有人在Windows上仍然存在此错误,我通过以下方法解决了问题:

  • 从Poppler for Windows下载Poppler的最新二进制文件
  • C:poppler-0.68.0一样将其解压缩到C驱动器中
  • 指定Poppler路径,如下所示:
from PIL import Image
import pytesseract
import sys
from pdf2image import convert_from_path
import os
ROOT_DIR = os.path.abspath(os.curdir)
# Path of the pdf 
PDF_file = ROOT_DIR + r"PdfToImagesrc2.pdf"

''' 
Part #1 : Converting PDF to images 
'''

# Store all the pages of the PDF in a variable 
pages = convert_from_path(PDF_file, 500, poppler_path=r'C:poppler-0.68.0bin')

在Windows中

安装Windows Poppler 的Poppler

  • 500=JPG 的质量

  • 路径包含pdf文件

  • pip安装pdf2img

    path = r'C:ABCFEFKLHpdf_extractoroutputbreak'
    def spliting_pdf2img( path):
    from pdf2image import convert_from_path, convert_from_bytes
    for file in os.listdir(path):
    if file.lower().endswith(".pdf"):
    pages = convert_from_path(os.path.join(path,file), 500,poppler_path= r'C:ABCDEFDownloadspoppler-0.68.0bin')
    for page in pages:                    
    page.save(os.path.join(path,file.lower().replace(".pdf",".jpg")),'JPEG')    
    

在Linux/UBUNTU中在UBUNTU/Linux终端中安装以下软件包

  • sudo apt-get更新

  • sudo apt-get安装poppler utils

    path = r'C:ABCFEFKLHpdf_extractoroutputbreak'
    def spliting_pdf2img( path):
    from pdf2image import convert_from_path, convert_from_bytes
    for file in os.listdir(path):
    if file.lower().endswith(".pdf"):
    pages = convert_from_path(os.path.join(path,file), 500)
    for page in pages:                    
    page.save(os.path.join(path,file.lower().replace(".pdf",".jpg")),'JPEG')
    

对于MAC,如果您安装了brew,那就是方法。

brew install poppler

安装所有依赖项需要几分钟的时间,但pdf2image将在之后工作。

这是这里的一个答案的重复,答案也在本页的评论中。加上这个答案b/c,我花了一段时间才找到MAC的正确解决方案。

我正在Visual Studio Code中的mac上工作,遇到了这个错误。我遵循了安装说明,能够验证软件包是否已安装,但在VSC中运行时错误仍然存在。

尽管我在settings.json中指定了python.condaPathpython.pythonPath,但直到激活了VSC集成终端本身内部的conda环境

conda activate my_env

错误消失了。。

奇怪。

下载poppler后执行此操作。。。。导入操作系统os.environ["PATH"]=r";C: 。。。。。\poppler-xxxxxxx\bin";用这个让环境希望它能起作用。它对我有效。

我在Mac上遇到了同样的问题
我通过替换-poppler_path= 'usrbin'中的poppler_path解决了这个问题"至poppler_path= 'usrlocalbin'但你可以试着把poppler可能在mac上的所有地方都打印出来通过终端中的echo $PATH,并尝试作为poppler_path=" "的所有选项

我在使用Visual Studio代码和conda环境的Mac上遇到了同样的问题。

我发现我可以从命令行运行代码,但不能从VS代码运行。然后,当从命令行运行时,我使用在VS代码中打印环境变量

print(os.environ)

当我比较两者时,我注意到";PATH";变量不同。我的conda环境不在";PATH";VS代码中的变量。我认为这意味着VS代码没有正确激活我的conda环境。因此,我把我的";PATH";并在我的launch.json环境变量中设置它。然后问题就解决了。

"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"python": "/Users/<username>/miniconda3/envs/<env_name>/bin/python",
"env": {
"PATH":"<PATH STRING from command line>"
},
"program": "${file}"
}

除了必须在env变量中添加路径外,我遵循了之前发布的答案中的步骤。在pdf2image.covert_from_path中添加路径对我来说不起作用。所以,如果有人在Windows上仍然有这个错误,我通过以下方法解决了这个问题:

  1. 从Poppler下载适用于Windows的Poppler最新二进制文件Windows

  2. 将其解压缩到C驱动器中,如C:\poppler-0.68.0

  3. 在环境变量中指定Poppler路径

环境变量中的Poppler路径

我遇到了同样的问题,但我已经通过更改目录在我的django项目中修复了它。实际上,首先你需要将这个pdf图像文件存储在你的媒体目录中。然后,您需要将当前目录更改为该媒体目录(该pdf图像文件存储在其中)。这是我在django项目中的代码片段,我已经将.pdf图像转换为.jpg

import PIL
from PIL import Image
def convert_pdf_2_image(uploaded_image_path, uploaded_image,img_size):
project_dir = os.getcwd()
os.chdir(uploaded_image_path)
file_name = str(uploaded_image).replace('.pdf','')
output_file = file_name+'.jpg'
pages = convert_from_path(uploaded_image, 200)
for page in pages:
page.save(output_file, 'JPEG')
break
os.chdir(project_dir)
img = Image.open(output_file)
img = img.resize(img_size, PIL.Image.ANTIALIAS)
img.save(output_file)
return output_file

相关内容

  • 没有找到相关文章

最新更新