我正在尝试使用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时,需要满足以下依赖项:
-
安装pdf2image
pip安装pdf2image
-
安装python dateutil
pip安装python dateutil
-
提升阀的安装
-
在环境变量(系统路径)中指定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?
:
- 安装
chocolatey
https://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.condaPath
和python.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上仍然有这个错误,我通过以下方法解决了这个问题:
-
从Poppler下载适用于Windows的Poppler最新二进制文件Windows
-
将其解压缩到C驱动器中,如C:\poppler-0.68.0
-
在环境变量中指定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