PythonでPDFの指定範囲(座標)から文字抽出をする方法をご紹介します。
動画で動作確認ができます👇
pythonでPDFから文字抽出
以下のコードを実行すると、PDFを範囲指定して文字認識をします。
import pyautogui as pag
import pyocr
from PIL import Image
import sys
import subprocess
import pyperclip
import os
import time
acr_path = "C:/Program Files/Adobe/Acrobat DC/Acrobat/Acrobat.exe"
#PDF指定
pdf_path = 'C:/Users/admin/Desktop/test/PDFファイル/'
pdf_list = os.listdir(pdf_path)
i = 1
#OCRを動かして、テキストデータに変換(スペース削除)
def run_ocr(tool,name_img):
result = tool.image_to_string(name_img,lang='jpn')
result = result.replace(' ','')
print(result)
return result
if __name__=='__main__':
#OCR呼び出し
tools = pyocr.get_available_tools()
tool = tools[0]
#フォルダ内にあるPDFファイルをループ
for idx,file in enumerate(pdf_list):
#PDFファイルを開く
pdf_pro = subprocess.Popen([acr_path,pdf_path+file],shell=False)
time.sleep(3)
#座標指定箇所を切り取りして画像保存
name_img = pag.screenshot(str(i) + 'temp.png',region=(520, 190, 150, 50))
#指定座標を文字起こししてテキスト変換
result =run_ocr(tool,name_img)
i = i + 1
pdf_pro.kill()
time.sleep(1)
コード実行前
[pdf_path] フォルダ内には、複数のPDFファイルが存在しています。
PDFは全て同じフォーマットです。
PDFファイルからOCRで文字抽出をする座標を指定して、
[region=(520, 190, 150, 50)] へ入力します。
コード実行後
[pdf_path] 内をループし、
1つずつPDFファイルを開いて指定座標の文字をテキストに変換します。
追記
・指定座標の中に文字が入り切っていない場合、
抽出した文字が、文字化けするようです。
・PDFからの文字抽出の精度は100%ではありませんので、
あらかじめご了承いただけますと幸いです。
・22/10/22 メモ
[acr_path] の中身が以下だと動かなくなっていたので、変更しています。
acr_path = ‘C:/Program Files (x86)/Adobe/Acrobat Reader DC/Reader/AcroRd32.exe’
・動作環境
Python 3.7.4
openpyxl 3.0.5
pyperclip 1.8.2
PyAutoGUI 0.9.52
pyocr 0.8
この記事がお役に立ちますと幸いです。
【Python】PDFを座標指定して画像保存する:2選
...
「Python2年生 スクレイピングのしくみ」
機械学習を始めたい方必見
必要最低限の文法をピックアップして解説
ネットからデータ収集を始めたい方へオススメの1冊です!
リンク