PythonでOCR:PDFから文字抽出(テキスト変換) 動画あり

python-PDFから文字抽出OCR-アイキャッチ Python

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冊です!