はじめに
ブログを書いていると、ある範囲指定した領域をコピーしてクリップボードに記憶してある内容(画像)から直ぐに文字を取り出して、違う文書に張り付け(ペースト)したいと思うことがありませんか?
今までは、クリップボードにある画像を、Google Keepを起動しておき、そこにメモとして貼り付け、KeepのOCR機能によりパソコンで使える文字として読み取り、そこから必要な部分をコピーして、文書に張り付けるという操作をしておりました。
この2重手間を省いて、「クリップボードの内容」⇒「OCRで文字抽出」⇒「クリップボード」と言う一連の操作をPythonを使ってプログラムを組み、直ぐに呼び出せるようにしたいと思います。
ここでは、「クリップボードの内容」⇒「OCRで文字抽出」⇒「クリップボード」と言う一連の操作をPythonを使ってプログラムを組み、直ぐに呼び出せるようにする方法について紹介します。
この記事を読むと、次の疑問について知ることができます。
パソコンOS : Windows11 Pro
Windowsバージョン : 22H2
VScodeのバージョン : 1.77.3
Tesseract OCRのバージョン : 5.3.1
pyinstallerのバージョン : 5.11.0
PythonでOCR
画像内に書いてある文字を認識して、パソコンで使えるようにする機能をOCR(Optical Character Recognition/Reader、オーシーアール、光学的文字認識)と言い、この機能をPythonで利用するためには、文字認識するプログラムが必要であり、無料で利用できるものに「Tesseract OCR」があります。
Tesseract OCRは、元々1980年代にヒューレット・パッカードが開発していましが、2005年にオープンソース化され、その後の開発はGoogleが後援しています。
Tesseract OCRは、色々なOS(オペレーティングシステム)上で動作する光学式文字認識エンジンであり、116の言語(日本語にも対応)と37のスクリプトに対応しており、もちろんPythonでも利用が可能です。
初期の目的である「クリップボードの内容」⇒「OCRで文字抽出」⇒「クリップボード」と言う一連の操作をPythonを使ってプログラムを組むために、必要となるライブラリーなどは、Tesseract OCRを除くと次のものがあります、
- pyocr
PythonからTesseract OCRを呼び出すためのパケージです。画像から文字列を抽出する機能を提供します。 - Pillow
Pythonで画像処理を行うためのパケージです。画像の読み込みや切り出し、保存などの操作ができます。 - pyperclip
Pythonでクリップボードを操作するためのパケージです。クリップボードに画像や文字列をコピーしたり、貼り付けたりすることができます。 - pyinstaller
PythonプログラムをWindows上の実行ファイル(.exe)形式に変換してくれるパッケージ。
OCRのPythonプログラム
それでは、実際にOCRのPythonプログラムを組む前に、必要なTesseract OCRをダウンロードしてインストールします。
なお、プログラムのコードエディターであるVScode、Python(Pythonのダウンロードとインストール部分を参照)は既にインストール済みであることを前提で話おすすめます。
Tesseract OCRのダウンロードとインストール
Tesseract OCRのWindows用のインストーラーのダウンロードページに移動し、「Tesseract installer for Windows」と書かれた下の方にある「tesseract-ocr-w64-setup-5.3.1.20230401.exe (64 bit)」をクリックすると、パソコンに「tesseract-ocr-w64-setup-5.3.1.20230401.exe」がダウンロードされます。
ダウンロードした「tesseract-ocr-w64-setup-5.3.1.20230401.exe」をダブルクリックして起動します。
すると、「このアプリが変更を加えることを許可しますか?」と聞いてくるので「はい」をクリック、「Please select a language」と聞いてくるので「English 」(日本語はない)を選択して「OK」をクリック。
「Welcome to Tesseract-OCR Setup」ウインドウが表示されますので「Next >」をクリック、「License Agreement」ウインドウが表示されたら「I Agree」をクリック、
「Choose Users」ウインドウが表示されますので「Next >」をクリック、
「Choose Components」ウインドウが表示されたら「Additional script data (download)」から「Japanese script」と「Japanese vertical script」、「Additional language data (download)」から「Japanese」と「Japanese (vertical)」にチェックを入れ、「Next >」をクリック。
「Choose Install Location」ウインドウが表示されますので、インストール先のパス(プログラムの際に使う、ここでは、「C:\Program Files\Tesseract-OCR」)を記録し、「Next >」をクリック、「Choose Start Menu Folder」ウインドウが表示されたら「Install」をクリック。
「Installation Complete」ウインドウが表示されますので「Next >」をクリック、「Completing Tesseract-OCR Setup」ウインドウが表示されたら「Finish」をクリックするこでTesseract OCRをインストールできたことになります。
pyocr、Pillow、pyperclip、pyinstallerのインストール
pyocr、Pillow、pyperclip、pyinstallerのインストールは、VScode上からインストールができます。
pipコマンドを使うと、Pythonに公式に登録されたパッケージや、サードパーティが配布しているパッケージをインストールしたり、アンインストールしたり、バージョンを確認したり、アップグレードしたりできます。
使い方は、簡単でVScodeのターミナル(Ctrl +J)を開き、次のように書きます。
pip install パケージ名
したがって、pyocr、Pillow、pyperclip、pyinstallerをインストールするには、VScodeのターミナルから次のコマンドを一つずつ実行します。
pip install pyocr
pip install Pillow
pip install pyperclip
pip install pyinstaller
OCRのPythonプログラム本体
この部分のPythonプログラムは、YouTubeの大福チャンネルさんが作成したプログラムが大変分かり易く解説されていますので、これを使わせていただきました。
プログラムは、以下の通り。
# ライブラリのインポート
import pyocr
from PIL import Image, ImageGrab
import pyperclip as pc
# Tesseract OCRのパスを指定
pyocr.tesseract.TESSERACT_CMD = r'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'
# OCRエンジンをTesseractに指定
tools = pyocr.get_available_tools()
tool = tools[0]
# クリップボードから画像を取得
img = ImageGrab.grabclipboard()
# 画像から文字を読み込む
builder = pyocr.builders.TextBuilder(tesseract_layout=6)
text = tool.image_to_string(img, lang="jpn", builder=builder)
# 半角スペースを削除
text = text.replace(" ", "")
# 文字列をクリップボードにコピー
pc.copy(text)
# 文字列を表示
print(text)
OCRのPythonプログラムを実行フィル形式に変換
最後は、OCRのPythonプログラムをあなたの好きな名前(例、pyocr001.py)で保存し、そのプログラムコードのディレクトリーに移り、次のようにコマンドを打ち込みます。
pyinstaller pyocr001.py --onefile
上述のコマンドが終了後に、あなたが作成したPythonプログラムのディレクトリーに「dist」と言うフォルダーが作成され、その中にあなたが作成したPythonプログラム名の実行ファイル(例、pyocr001.exe)が作成されています。
OCRのPythonプログラムをショートカットキーに割り当て
作成されたあなたが作成したPythonプログラム名の実行ファイルをデスクトップにショートカットアイコンを作成します。
そのアイコンの上で右クリックすると表示されるメニューで「プロパティー」⇒「シュートカットキー」を順にクリックし、「シュートカットキー」の右の欄にあなたの好きなショートカットキーを割り当てます。(例、「Ctrl + Alt + 変換」など)
こうすることにより、あなたが好きな時にあなたが登録したショートカットキーを押すことにより、OCRのPythonプログラムを呼びだすことができるようになります。
おわりに
如何だったでしょうか?
PythonでOCR、OCRのPythonプログラム、Tesseract OCRのダウンロードとインストール、pyocr、Pillow、pyperclip、pyinstallerのインストール、OCRのPythonプログラム本体、OCRのPythonプログラムを実行フィル形式に変換、OCRのPythonプログラムをショートカットキーに割り当てなどについて解説してきました。
この記事が少しでもあなたにとって役に立てればこれほど嬉しいことはありません。
以上です。
コメント