質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1572閲覧

PythonでPDFを画像として扱いたい

ODYSSEY

総合スコア1

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

0クリップ

投稿2023/01/17 01:59

編集2023/01/17 02:29

前提

PythonでOpencvを利用し、PDF取り込み後、記載されている数値やマーク、文字を取得する機能を作っています。
PDFからJPEGへの変換機能においてgooglecolabで動作の確認ができましたが、手元の環境ではエラーメッセージが発生しました。

実現したいこと

  • 手元の環境でも変換できるように整備をしたいです。

発生している問題・エラーメッセージ

Traceback (most recent call last):
File "/Users/~~/Documents/Python/PDF_ext/PDF/JPEGに変換.py", line 2, in <module>
pages = convert_from_path('7a79c35f7ce0704dec63be82440c8182.pdf')
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pdf2image/pdf2image.py", line 127, in convert_from_path
page_count = pdfinfo_from_path(
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pdf2image/pdf2image.py", line 594, in pdfinfo_from_path
raise PDFInfoNotInstalledError(
pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?

該当のソースコード

from pdf2image import convert_from_path
pages = convert_from_path('7a79c35f7ce0704dec63be82440c8182.pdf')
for idx,page in enumerate(pages):
page.save('out{}.jpg'.format(idx+1), 'JPEG')

試したこと

https://teratail.com/questions/164621
https://teratail.com/questions/131959
https://qiita.com/yutoman027/items/7ee796c41575eb0511c3
上記を参考にbrew doctorのエラーの解消、再インストールや

/usr/local/Cellar/poppler/23.01.0/bin
pdfinfoのあるディレクトリ(上記)へのパスを作成しましたが、解決しませんでした。

エラーの解決方法を教えていただけないでしょうか。

補足情報(FW/ツールのバージョンなど)

python 3.10.9
IDLE 3.10.9
HOMEBREW 3.6.19
macOS11.7.2

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2023/01/17 02:03

「数値やマーク、文字を取得する」には、PDF を画像化しない方が良いのでは…。
ODYSSEY

2023/01/17 02:07

コメントありがとうございます。 pdfminerで文字の取得はできましたが、取得したい画像の☆のようなマークが取得できなかったので、2値処理を利用していました。 そのためPDFをJPEGやPNGに変換をしたいと考えています。
melian

2023/01/17 02:21

ターミナルで、pdfinfo を実行するとどうなりますか?
ODYSSEY

2023/01/17 02:24

コメントありがとうございます。 下記ターミナルでのpdfinfoの実行結果です。 pdfinfo version 23.01.0 Copyright 2005-2023 The Poppler Developers - http://poppler.freedesktop.org Copyright 1996-2011, 2022 Glyph & Cog, LLC Usage: pdfinfo [options] <PDF-file> -f <int> : first page to convert -l <int> : last page to convert -box : print the page bounding boxes -meta : print the document metadata (XML) -custom : print both custom and standard metadata -js : print all JavaScript in the PDF -struct : print the logical document structure (for tagged files) -struct-text : print text contents along with document structure (for tagged files) -isodates : print the dates in ISO-8601 format -rawdates : print the undecoded date strings directly from the PDF file -dests : print all named destinations in the PDF -url : print all URLs inside PDF objects (does not scan text content) -enc <string> : output text encoding name -listenc : list available encodings -opw <string> : owner password (for encrypted files) -upw <string> : user password (for encrypted files) -v : print copyright and version info -h : print usage information -help : print usage information --help : print usage information -? : print usage information
melian

2023/01/17 02:35

おそらく、IDLE プロセスの環境変数 PATH の値が書き替わっていないのではないかと思うのですが、macos に関してはよく判らないので、動作確認のため以下をソースコードの先頭に入れてみて実行してみて下さい。 import os os.environ['PATH'] += ':/usr/local/Cellar/poppler/23.01.0/bin'
ODYSSEY

2023/01/17 02:39

引き続きありがとうございます。 いただいたコードを追加したところ実行できました。 大変助かりました。
melian

2023/01/17 02:48

実行できてよかったです。ただ、これは暫定的な措置ではありますので、ログインシェルの設定ファイル(~/.bash_profile, ~/.zprofile, ~/.profile など)に上記の PATH 設定を追加しておくとよいかと思います。
jbpb0

2023/01/17 04:06

> いただいたコードを追加したところ実行できました。 質問を「解決済」にしてください
guest

回答1

0

自己解決

melianさんのコメントより解決しました。
IDLE プロセスの環境変数 PATH の値が書き替わっていないのではないかと思うのですが、macos に関してはよく判らないので、動作確認のため以下をソースコードの先頭に入れてみて実行してみて下さい。

import os
os.environ['PATH'] += ':/usr/local/Cellar/poppler/23.01.0/bin'

回答がついていないため自己解決にさせていただきました。

投稿2023/01/17 04:13

ODYSSEY

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問