🐕

Ocr

2023/04/13に公開
import easyocr
import fitz
import os
from PIL import Image

# OCRモデルの読み込み
reader = easyocr.Reader(['ja'])

# 出力ファイル名の設定
output_filename = "output.md"

# 出力ファイルのオープン
output_file = open(output_filename, "w")

# PDFファイルの読み込み
pdf_file = "input.pdf"
with fitz.open(pdf_file) as doc:

    # ページごとに処理を実行
    for page_number, page in enumerate(doc):

        # OCR処理
        image_list = page.get_images(output="png")
        for image_number, image in enumerate(image_list):
            image_path = f"page_{page_number+1}_image_{image_number+1}.png"
            Image.frombytes("RGB", [image.width, image.height], image.samples).save(image_path)
            output_file.write(f"![image{image_number+1}](./{image_path})\n\n")

        text = reader.readtext(page.get_text("text")).strip()
        if len(text) > 0:
            output_file.write(f"{text}\n\n")

# 出力ファイルのクローズ
output_file.close()

Discussion