PythonでPDFファイルからテキストや画像を抽出する方法
「にゃんぽう」という商品のHPに掲載してという依頼
兄が新規事業として猫用の漢方を販売したいと連絡があり
その商品の情報をホームページに突貫で掲出してほしいと頼まれた
PythonでPDFファイルからテキストや画像を抽出する方
パンフレットをもらいそれをホームページ化するのだが文字が多い
そこで以下のサイトでテキスト変換を試した
。。。。がダメだった
そこでPythonでテキスト抽出にチャレンジする
ターゲットのpdfはこちら
PyPDF2ライブラリを用いてテキストを抽出
VSCode上でPythonスクリプトを実行
ターミナル
pip install PyPDF2
pypdf.pyを作成
コードは以下
import PyPDF2
def extract_text_from_pdf(pdf_path):
with open(pdf_path, 'rb') as file:
reader = PyPDF2.PdfReader(file)
text = ''
for page in reader.pages:
text += page.extract_text()
return text
# PDFファイルのパス
pdf_path = 'path/to/your/pdf_file.pdf'
text = extract_text_from_pdf(pdf_path)
print(text)
ターミナルで
python3 pypdf.py
結果
抽出できず。。。。
別のライブラリpdf2imageを使用してPDFから画像を取り出す
ターミナル
pip install PyPDF2 pdfplumber
plumber.pyを作成
コードは以下
import pdfplumber
def extract_text_with_pdfplumber(pdf_path):
text = ''
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
text += page.extract_text()
return text
# PDFファイルのパス
pdf_path = 'path/to/your/pdf_file.pdf'
text = extract_text_with_pdfplumber(pdf_path)
print(text)
結果
抽出できず。。。。
デバッグコードを入れてみる
import pdfplumber
import os
def extract_text_with_pdfplumber(pdf_path):
# PDFファイルの存在確認
if not os.path.exists(pdf_path):
print(f"指定されたファイルが存在しません: {pdf_path}")
return None
text = ''
with pdfplumber.open(pdf_path) as pdf:
print(f"PDFには {len(pdf.pages)} ページが含まれています。")
for i, page in enumerate(pdf.pages):
current_text = page.extract_text()
if current_text:
print(f"ページ {i+1} からテキストを抽出中...")
text += current_text
else:
print(f"ページ {i+1} にテキストレイヤーが見つかりません。")
if text:
print("テキスト抽出完了。")
else:
print("テキストが見つからないため、PDFはおそらく画像ベースです。OCRが必要かもしれません。")
return text
# PDFファイルのパス
pdf_path = '/Users/kawamotonaoki/Desktop/resize/にゃんぽうパンフレットA4_16P訂正2.pdf'
text = extract_text_with_pdfplumber(pdf_path)
if text:
print(text)
結果
python3 plumber.py
PDFには 8 ページが含まれています。
ページ 1 にテキストレイヤーが見つかりません。
ページ 2 にテキストレイヤーが見つかりません。
ページ 3 にテキストレイヤーが見つかりません。
ページ 4 にテキストレイヤーが見つかりません。
ページ 5 にテキストレイヤーが見つかりません。
ページ 6 にテキストレイヤーが見つかりません。
ページ 7 にテキストレイヤーが見つかりません。
ページ 8 にテキストレイヤーが見つかりません。
テキストが見つからないため、PDFはおそらく画像ベースです。OCRが必要かもしれません。
抽出できず
画像ベースなのか
PyTesseractを利用してOCRを行う方法に切り替え
GoogleのTesseract-OCRエンジンのPythonラッパーで、多くの言語で高精度な文字認識が可能だそう。
Tesseractのインストール:
brew install tesseract
Popplerのインストール
brew install poppler
Homebrewがインストールされていない場合は、先にHomebrewをインストールしてください。
仮想環境の作成
python3 -m venv ~/Desktop/resize/myvenv
仮想環境のアクティベーション
python3 -m venv ~/Desktop/resize/myvenv
PyTesseractのインストール:
python3 -m pip install pytesseract
日本語言語データのインストール
cd /opt/homebrew/share/tessdata/
日本語言語データファイルのダウンロード:
curl -L -o jpn.traineddata https://github.com/tesseract-ocr/tessdata/raw/main/jpn.traineddata
ディレクトリ戻る
cd ~/Desktop/resize
ocr_extractor.pyファイル作成
touch ocr_extractor.py
import pytesseract
from pdf2image import convert_from_path
import os
def extract_text_with_ocr(pdf_path):
# PDFファイルの存在確認
if not os.path.exists(pdf_path):
print(f"指定されたファイルが存在しません: {pdf_path}")
return None
# PDFを画像に変換
images = convert_from_path(pdf_path)
all_text = ''
print(f"PDFから {len(images)} 枚の画像を生成しました。")
# 各画像にOCRを適用してテキストを抽出
for i, image in enumerate(images):
text = pytesseract.image_to_string(image, lang='jpn')
all_text += f"ページ {i+1}:\n{text}\n"
print(f"ページ {i+1} のOCR処理が完了しました。")
return all_text
# PDFファイルのパス
pdf_path = '/Users/kawamotonaoki/Desktop/resize/にゃんぽうパンフレットA4_16P訂正2.pdf'
text = extract_text_with_ocr(pdf_path)
if text:
print(text)
やっと実行
python3 ocr_extractor.py
結果
PDFから 8 枚の画像を生成しました。
ページ 1 のOCR処理が完了しました。
ページ 2 のOCR処理が完了しました。
ページ 3 のOCR処理が完了しました。
ページ 4 のOCR処理が完了しました。
ページ 5 のOCR処理が完了しました。
ページ 6 のOCR処理が完了しました。
ページ 7 のOCR処理が完了しました。
ページ 8 のOCR処理が完了しました。
ページ 1:
s
和 漢 配 合 猫用おやつ`〝〝
mems 合 同 会 社 ベ ビ ア
青 森 県 八 戸 市 鮫 町 字 住 吉 町 ⑭-⑦
ページ 2:
( 十 顔 )
①0000
⑨⑧00
⑨⑥00
⑨④00
⑨②00
⑨000
⑧⑧00
⑧⑥00
⑧④00
⑧②00
⑳①⑤ ⑳①⑥ ⑳①⑦ ⑳①⑧ ⑳①⑨
猫 と 犬 の 飼 育 頭 数 推 移 ーe 一 災 嘴
ーー * 桂
コ ロ ナ 禍 に よ り 人 々 は 心 の 安 ら ぎ を 求 め る 傾 向 が 高 く な り 、
ペ ッ ト 需 要 、 中 で も ベ ペ ッ ト フ ー ド 産 業 は 伸 び て い ま す 。
そ の 中 心 世 代 は 、 比 較 的 余 裕 の あ る ⑤0 歳 代 と い わ れ て い ま す 。
猫 を 飼 う 人 が 増 え て い る 理 由
犬 は そ ば に 寄 り 添 っ て 飼 い 主 を 癒 や し て く れ る 一 方 、
散 歩 に 連 れ て い か な け れ ば な ら な い し 、 糞 の 始 末 も 飼 い 主 の 義 務 。
つ ま り 、 手 間 と コ ス ト が と て も か か る こ と が 飼 う 人 の 減 少 の 要 因
と 思 わ れ ま す 。 一 方 、 猫 が 人 気 の 要 因 と し て 、“SNS 映 え “ が
挙 げ ら れ ま す 。 し か も 独 立 心 が 強 く 、 手 が か か ら な い こ と も
需 要 が 増 え て い る 要 因 で し ょ う 。 さ ら に 猫 を 飼 う 生 涯 コ ス ト は 、
犬 を 飼 う コ ス ト よ り ④ 割 安 い と い わ れ て い ま す 。
ページ 3:
愚 猫 は 家 族 の 一 員 、
い つ ま で る も 健 康 ・ 長 寿 で あ っ て ほ し い 。
猫 は 家 族 全 員 に 癒 し を く れ る
猫 を 見 て い る だ け で 幸 せ な 気 持 ち に な る と い う 癒 し 効 果 は 、
科 学 的 に も 証 明 さ れ て い ま す 。
猫 を な で る と 幸 せ ホ ル モ ン と 呼 ば れ る オ キ シ ト シ ン が 分 泌 さ れ 、
ス ト レ ス が 軽 減 さ れ 、 機 嫌 の 良 い と き に 鳴 ら す ゴ ロ ゴ ロ 音 は
人 間 の 血 圧 を 下 げ 、 免 疫 力 を 上 げ る と い わ れ て い ま す 。
人 間 同 様 に ベ ッ ト も ` 高 齢 化 」 傾 和
ョ 多 く の 人 が 犬 や 猫 な ど の ベ ッ ト に 愛 情 を 注 げ る 時 代 は 、
ノ 平 和 で 幸 せ な 時 代 で す 。
ベ ッ ト の 扱 い 方 が 、 成 熟 社 会 の パ ロ メ ー タ ー。
ベ ッ ト を 家 族 の 一 員 と し て 扱 い 、 生 涯 を 共 に す る 人 が 増 え て
い る た め 、 自 ず と ベ ッ ト の 高 齢 化 問 題 に 向 き 合 う 頻 度 が 高 く
な っ て き て い ま す 。
@ 恒 猫 の ご 飯 や お や つ を 決 め る 基 準 は … ?
A つ a み mneo ④⑧e 猪 は グ ル メ 、
年 齢 病 気 な と に 合 も ち せ て つ ク グ % お い し く て 健 康 に も 良 い
そ の 他 ⑳% ` 猫 用 お や つ 」] が 求 め ら れ る 。
ページ 4:
| に ゃ ん ぽ う | 開 発 の 経 緯
シ ニ ア 猫 の 宿 命 ` 慢 性 胎 臓 病 」
家 族 の 一 員 で あ る 愛 猫 の 高 齢 化 に 伴 い 、 腎 臓 病 に か か る 猫 が 増 え て
い ま す 。 ` 慢 性 腎 臓 病 」 は 、①⑤ 歳 以 上 の シ ニ ア 猫 の ⑦0~⑧0% が
か か る と 言 わ れ て ま す 。
猫 は 身 体 に 取 り 込 ん だ 水 分 や 栄 養 素 を ギ リ ギ リ ま で 高 濃 度 に 蕃 え る
機 能 を 持 っ て お り 、 腎 臓 や 肝 臓 に か な り の 負 担 を 強 い る 機 能 構 造 に
な っ て い ま す 。 高 齢 猫 の ほ と ん ど は 腎 臓 の 機 能 が 衰 え 、 慢 性 腎 不 全
に な る 可 能 性 が 高 い わ け で す 。
` 腎 ケ ア ] へ の 対 応 築 と し て 、 西 洋 医 学 で は 尿 が 酸 性 又 は ア ル カ リ 性
に 傾 い た ら 補 正 し 、 結 石 な ど が 出 来 な い 様 に コ ン ト ロ ー ル し ま す 。
こ れ に 対 し て 、 東 洋 医 学 で は 予 防 に 重 き を 置 き 、 腎 臓 が 弱 っ た ら 自 律
神 経 を 整 え 、 血 管 を 含 め て 内 臓 の 健 康 を 保 ち 、 本 来 持 っ て い る 免 疫 力
で 体 調 を 整 え よ う と し ま す 。
西 洋 医 学 と 東 洋 医 学 の 考 え 方 の 違 い
例 え ば 発 熱 し た 時 、 西 洋 医 学 で は 解 熱 剤 等 で 発 熱 を 抑 え る 様 に 対 処
し ま す 。 東 洋 医 学 で は 、 体 を 温 か く し て 体 温 を 上 げ 、 発 汗 を 促 し 、
本 来 持 っ て い る 免 疫 力 を up さ せ 、 体 内 の ウ ィ ル ス 等 を 排 出 す る 方
法 を 選 ん だ り し ま す 。 東 洋 、 西 洋 ど ち ら が 良 い か で は な く ア ブ ロ ー
チ が ま っ た く 違 う わ け で す 。
当 商 品 ` に ゃ や ん ぽ う 」 は 、 東 洋 医 学 漢 方 食 材 と 言 う ` 新 し い 選 択 肢 」 を
採 用 。 漢 方 食 材 が 優 れ て い る の は 広 く 知 ら れ て い る に も か か わ ら す ず 、
な か な か 出 来 な か っ た 嗜 好 性 の 高 い 商 品 で す 。
和 漢 配 合 の 猫 用 お や つ と し て 独 自 の 製 法 で 開 発 さ れ た
` に ゃ ん ぼ ぽ う 」
昔 か ら 漢 方 が 猫 の 内 臓 ケ ア に 有 効 な の は 広 く 知 ら れ て い ま し た 。
そ れ に 加 え ` に ゃ ん ぽ う ] で は 、 東 洋 医 学 の “ 予 防 に 重 き を 置 く “ と い う
考 え 方 を 取 り 入 れ 、 漢 方 の 生 薙 、 セ ン キ ュ ウ ・ ハ ト ム ギ を 配 合 し ま し た 。
常 日 頃 か ら 愛 猫 の 健 康 を サ ポ ー ト す る こ と を 心 が け た 猫 専 用 の ` お や つ 」
で あ る こ と を コ ン セ プ ト に 開 発 が 始 ま り ま し た 。
と こ ろ が 、 猫 の 内 臓 ケ ア に 欠 か せ な い 有 効 生 薙 で あ る ` セ ン キ ュ ウ 」 は
強 い 匂 い を 放 つ た め 、 一 部 の 猫 に し か 与 え る 事 が 出 来 な い と い う 問 題 が
発 生 し ま し た 。
当 社 で は 試 行 錯 誤 の 末 、 独 自 の 製 法 を 編 み 出 し て こ の 問 題 を ク リ ア す る こ と
に 成 功 し ま し た 。 こ の よ う に し て 、 多 く の 猫 た ち に 喜 ん で お い し く 食 べ て
も ら え る よ う に 開 発 さ れ た の が ` に ゃ ん ぽ う 」] で す 。
ページ 5:
| に ゃ ん ぽ う 」 独 自 の 製 法 ョ
` 青 森 り ん ご | と ` 漢 方 」 の コ ラ ボ レ ー シ ョ ン
原 材 料 に 青 森 り ん ご ・ セ ン キ ュ ウ ・ ハ ト ム ギ な ど 他 で 中 々 ま ね
で き な い モ ノ を 使 用 し て い る こ と が ` に ゃ ん ぽ う ] の 特 徴 で す 。
商 品 の 開 発 に あ た り 、 素 材 を [ 日 本 料 理 」 の 様 に 下 処 理 し て 丁 寧
に 作 る こ と 、 そ し て 何 よ り も 配 合 に 気 を 配 り ま し た 。
中 で も 青 森 り ん ご は ジ ュ ー ス の 絞 り か す を 使 用 し 、 上 手 く ア ッ プ
サ イ ク ル さ せ て 漢 方 食 材 を 加 え ま し た 。
持 続 可 能 な 商 品 で あ り 、 且 つ 環 境 に 配 慮 し た 商 品 で す 。
猫 は グ ル メ と 言 わ れ 、 配 合 に 関 し て 少 し で も バ ラ ン ス が 崩 れ る
と 食 べ て く れ ま せ ん し 、 食 べ る 様 に 造 る と 必 要 な 成 分 が 足 り な く
な る 、 な ど の 問 題 が 生 じ て し ま い ま す 。
そ の 試 行 錯 誤 の 中 、 何 と か 監 修 の 先 生 が た に も 猫 に も 納 得 し て
頂 け る 商 品 が 完 成 し ま し た 。
北 里 大 学 の 獣 医 学 博 士 、 樋 口 誠 一 名 誉 教 授 が 監 修
` に ゃ ん ぽ う 」] は 北 里 大 学 獣 医 学 博 士 樋 口 誠 一 名 誉 教 授 の 監 修
の も と 生 ま れ た 商 品 で す か ら 、 安 心 し て ご 使 用 い た だ け ま す 。
PROFILE:
⑲④⑧ 年 秋 田 県 生 ま れ 。 北 里 大 学 医 学 部 獣 医 学 学 科 小 動 物 第 一 内 科 学 研 研 究 に 所 属 し 、
主 と し て 応 用 獣 医 学 、 原 虫 病 学 を 研 究 。
米 国 ハ ー バ ー ド 大 客 員 研 究 員 (①①⑨⑨⑦ 年 ) な ど 歴 任 。 中 国 吉 林 大 学 栄 誉 教 授 (②0①③ 年 )。
⑳①④ 年 に 北 里 大 学 名 誉 教 授 。②0①⑥ 年 か ら 八 戸 市 の 健 康 動 物 病 院 院 長 。
ページ 6:
青 森 り ん ご
ン E を 含 み ま す 。
ト 】
に
ベ
そ の 他 健 康 補 助 と し て ビ タ
ページ 7:
多 く の 愛 猫 家 さ ん か ら 器 砂 の 落 を
い た だ い て い ま す 。
⑥
腎 臓 病 が 心 配 で
ケ ア 出 来 る 商 品 を
探 し て い ま し た が 以 前 は ま っ た く
食 べ て く れ ま せ ん で し た 。
に ゃ ん ぽ う に し て か ら 毎 日 、
美 味 し そ う に 食 べ て く れ
お か げ さ ま で 定 期 健 康 診 断 で は ' '
毎 回 、 良 好 で す 。
(④0 代 男 性 )
ページ 8:
@` に ゃ ん ぽ う 」 の ネ ー ミ ン グ 、 そ の 由 来
中 国 で 使 用 さ れ て い る 生 薙 を 漢 薙 と い い 日 本 固 有 の 生 薙 を 和 薬 と 呼 び 、 両 者 を ま と め て
` 和 漢 薙 」] と し て い ま す 。 こ う い っ た 和 漢 薙 を い く つ か 組 み 合 わ せ た も の が ` 漢 方 薬 」
で す 。` に ゃ ん ぽ う 」] の 名 前 の 由 来 は 、 こ の ` 漢 方 」 か ら 来 て い ま す 。
` に ゃ ん ぼ ぽ う 」] と 言 え ば ` か ん ぽ う ] と す ぐ に 連 想 し て い た だ け る よ う に 名 付 け ま し た 。
@` に ゃ ん ぽ う 」 の パ ッ ケ ー ジ デ ザ イ ン
漢 方 薬 と 青 森 り ん ご 、 さ ら に 猫 が 飛 び つ く 鶏 む ね 肉 な ど を 独 自 の 製 法 で ブ レ ン ド し た 商
品 で あ る こ と を ア ピ ー ル す る た め 、 薬 草 イ メ ー ジ を 感 じ て い た だ け る よ う な デ ザ イ ン 、
ま た 国 産 で あ る た め 、 和 風 の 優 し い 色 調 を 心 掛 け ま し た 。
メ イ ン ビ ジ ュ ア ル の 猫 に は 、 商 品 の 高 級 感 に 合 っ た 優 雅 さ と 気 品 を 兼 ね 備 え た 、
真 っ 白 な ` タ ー キ ッ シ ュ ・ ア ン ゴ ラ 」 を 起 用 。 美 し い 毛 並 み は ` 健 康 」 の バ ロ メ ー タ ー
で も あ り ま す 。
祖 た ん ぱ く ・ ・・・⑦.0% 以 下
祖 脂 肪 ・・・・・・ ②.0% 以 下
成 分 | 祖 繊 維 ・・・・・・ 0.⑤% 以 下
祖 灰 分 ・・・・・・ 0.⑤% 以 下
水 分 ・ ・ ・ ・ . ・ ⑧⑤.0% 以 下
【① 日 に 与 え る 目 安 】 生 後 ⑥ か 月 以 上 の 幼 体 …① 包 、 成 体 … ① ~ ② 包
名 称 猫 用 栄 養 補 助 食 品 ( 間 食 )
原 材 料 名 鶏 肉 ( む ね 肉 )、 り ん ご 乾 燥 末 、 玄 米 パ ウ ダ ー、 国 産 サ ツ マ イ モ 未 、
ホ タ テ 貝 柱 パ ウ ダ ー、 セ ン キ ュ ウ 、 ハ ト 麦 粉 、 や ま い も 末 、 ビ タ ミ ン E
原 産 国 名 日 本
内 容 量 ⑫0g (⑧gx ⑮ 包 )
保 存 方 法 直 射 日 光 、 高 温 多 湿 を 避 け ②⑤C 以 下 の 冷 暗 所 で 保 存 し て く だ さ い 。
製 造 者 合 同 会 社 ベ ビ ピ ア 青 森 県 八 戸 市 鮫 町 字 住 吉 町 ⑭-⑦
Python恐るべし
この会社の代表をしています。よろしくお願いします。