VBAで
画像ファイル内のテキストを・・・
抽出できます!
※OCRできます。
※精度はそこそこです。
VBAから
・無料のOCRエンジン「tesseract-ocr」
を実行することで実現します!
※「tesseract-ocr」のインストールが必要です。
tesseract-ocrのダウンロード
以下のURLにアクセスする。
「tesseract-ocr-w64-setup-X.X.X.XXXXXXXX.exe (64 bit)」をクリックしてインストーラーをダウンロードする。
tesseract-ocrのインストール
ダウンロードしたインストーラー(tesseract-ocr-w64-setup-X.X.X.XXXXXXXX.exe)をダブルクリックする。
「OK」をクリックする。
「Next」をクリックする。
「I Agree」をクリックする。
「Next」をクリックする。
「Additional script data(download)」の「+」をクリックして、以下の2つにチェックを入れる。
※日本語を抽出するために必要なモノです。
・Japanese script
・Japanese vertical script
「Additional language data(download)」の「+」をクリックして、以下の2つにチェックを入れて、「Next」をクリックする。
※こちらも日本語を抽出するために必要なモノです。忘れずに。
・Japanese
・Japanese(vertical)
「Next」をクリックする。
「Install」をクリックする。
「Next」をクリックする。
「Finish」をクリックする。
VBAコード
ここでは例として
・デスクトップ配下の画像ファイル「sample_gazou.png」から
・テキストを抽出
します。
※テキストファイルを出力します。
'変数の宣言を必須
Option Explicit
Sub excePromptCmd()
Dim tesseractOcrExe As String
Dim imageFile As String
Dim outputFolder As String
Dim outputFileName As String
Dim execCommand As String
Dim wsh As Object
Dim result As Integer
'Tesseract OCRの実行ファイル
tesseractOcrExe = "C:\Program Files\Tesseract-OCR\tesseract.exe"
'画像ファイル
imageFile = "C:\Users\user\Desktop\sample_gazou.png"
'出力ファイル名
outputFileName = "sampleOcr"
'出力フォルダ ※末尾に「\」を付ける
outputFolder = "C:\Users\user\Desktop\output\"
'実行するコマンドを指定
execCommand = """" & tesseractOcrExe & """" & " " & imageFile & " " & outputFolder & outputFileName & " -l jpn"
Set wsh = CreateObject("WScript.Shell")
'コマンドを同期実行
result = wsh.Run(Command:="%ComSpec% /c " & execCommand, WindowStyle:=0, WaitOnReturn:=True)
If (result = 0) Then
MsgBox ("コマンドは正常終了しました。")
Else
MsgBox ("コマンドは異常終了しました。")
End If
'後片付け
Set wsh = Nothing
End Sub
実行結果
画像ファイル内のテキストを抽出できました。
※テキストファイルを出力できました。
参考①
上記のVBAコードは以下の記事を参考にして作成しました。
参考②
Pythonでも画像ファイル内のテキストを抽出できます。
詳細は以下の記事をご確認ください。
参考③
OCRエンジン「tesseract-ocr」はHPやGoogle等により開発されました。
詳細は以下をご確認ください。