Python超初心者講座 / 第13回

画像やPDFを扱う

画像変換・リサイズ・PDF処理の入口

この回の目的
Pythonは画像やPDFの処理にも使えます。 写真のリサイズ、形式変換、PDFの結合、テキスト抽出、帳票作成など、業務で役立つ場面が多い分野です。

画像処理に使うライブラリ

画像を扱う代表的なライブラリには Pillow と OpenCV があります。 初心者はまずPillowから始めると分かりやすいです。
python -m pip install pillow

画像を開いてサイズを確認する

from PIL import Image

img = Image.open("sample.jpg")
print(img.size)
print(img.mode)
size は幅と高さ、mode はRGBなどの色形式です。

画像をリサイズする

from PIL import Image

img = Image.open("sample.jpg")
resized = img.resize((800, 600))
resized.save("resized.jpg", quality=85)
写真アップロード機能やサムネイル作成でよく使います。

フォルダ内の画像をまとめて処理する

from pathlib import Path
from PIL import Image

input_dir = Path("images")
output_dir = Path("resized")
output_dir.mkdir(exist_ok=True)

for path in input_dir.glob("*.jpg"):
    img = Image.open(path)
    img.thumbnail((800, 800))
    img.save(output_dir / path.name, quality=85)
複数画像の一括処理はPythonが得意な作業です。

PDF処理に使うライブラリ

PDFを扱う場合は、用途によってライブラリを選びます。
ライブラリ用途
pypdfPDF結合、分割、ページ操作
PyMuPDFPDFのテキスト抽出、画像化、図表解析補助
reportlabPDF帳票を作る
インストール例:
python -m pip install pypdf pymupdf reportlab

PDFを結合する例

from pypdf import PdfWriter
from pathlib import Path

writer = PdfWriter()

for pdf_path in sorted(Path("pdfs").glob("*.pdf")):
    writer.append(str(pdf_path))

with open("merged.pdf", "wb") as f:
    writer.write(f)
フォルダ内のPDFをまとめる業務は非常に多いです。
練習
  1. 画像を1枚読み込んでサイズを表示する
  2. 画像を幅800px以内にリサイズする
  3. 複数画像をまとめてリサイズする
  4. PDFを2つ用意して結合する
画像とPDFを扱えると、現場写真、帳票、報告書、台帳などの自動化につながります。
理解チェック
前の回へ 次の回へ