Acrobat DCを利用して画面上の選択範囲をOCR。
Acrobat DCになって
OCRの精度が上がったようなので、
試しに作ってみました。
縦組みもOK。
Acrobat DCでしか動作しません。だぶん…
GUI Scriptingを使用しているため、
動作はかなり遅いです。
↓
コードを追加したら、動作が速くなりました。
理由は?
また、OCRの処理自体は、
Acrobat DCを利用していますが、
アプリに関係なく画面表示されるものは、
処理できるので、汎用性は高いと思います。
▼AppleScript(アプリケーション形式で保存。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
try tell application "Adobe Acrobat" if (count of document) ≠ 0 then activate display dialog "ドキュメントが開かれています。" & return & "OCRを中止します。" buttons {"OK"} default button 1 giving up after 55 with icon 0 return end if end tell set getTime to do shell script "date '+%m%d%H%M%S'" set tgt_file to "screen_" & (getTime as string) & ".png" --pngがデフォルト set txt_file to "screen_" & (getTime as string) & ".txt" do shell script "mkdir -p ~/Downloads/ScreenShot/" do shell script "screencapture -s ~/Downloads/ScreenShot/" & tgt_file tell application "Adobe Acrobat" activate open (path to home folder as string) & "Downloads:ScreenShot:" & tgt_file as alias end tell tell application id "com.apple.systemevents" tell application process "Acrobat Pro" --注意!! "Adobe Acrobat"ではない。 try click menu bar item 4 of menu bar 1 click menu item 12 of menu 1 of menu bar item 4 of menu bar 1 --テキストと画像を編集 click menu item 9 of menu 1 of menu bar item 4 of menu bar 1 ---すべてを選択? end try end tell end tell end try tell application "Adobe Acrobat" activate set NewFilepath to (path to home folder as string) & "Downloads:ScreenShot:" & txt_file save front document to file NewFilepath using conversion "com.adobe.acrobat.plain-text" close front document saving no end tell try set getText to (do shell script "textutil -cat txt -stdout " & quoted form of (POSIX path of NewFilepath)) set the clipboard to getText end try delay 0.5 try tell application "Finder" to set visible of (application process "Acrobat Pro" of application "Finder") to false --Acrobatを隠す end try activate set res to display dialog "●クリップボードにもテキストが記録されています。" & return & return & "テキストが取得できない場合は、\nシステム環境設定 >\nセキュリティーとプライバシー > アクセシビリティ >\nでスクリプトを再チェックしてください。" & return default answer getText if button returned of res = "OK" then set the clipboard to text returned of res --コードを追加。なぜか速くなる。 tell application id "com.apple.systemevents" tell application process "Acrobat Pro" --注意!! "Adobe Acrobat"ではない。 try click menu item 13 of menu 1 of menu bar item 3 of menu bar 1 --閉じる。 end try end tell end tell |
【使い方】
作成したスクリプトをダブルクリックして、(Dockに登録しておくとワンクリック)
OCR処理したい範囲を画面上で選択すると、
Acrobat DCで画像が開き、
OCRは、割りと一瞬で処理が終わり、
結果がダイアログで表示されます。
【注意点1】
画像をAcrobat DCで開いて、
編集 > テキストと画像を編集 で表示されるサイドメニューは、
スキャンした文書 > 「画像に戻す」 の状態にしておいてください。
「テキストに変換」の状態では、OCR処理されません。
【注意点2】
スクリプト処理中、
「ダウンロード」フォルダーに「ScreenShot」フォルダーが作成され、
その中に、キャプチャーされた画像とOCR処理したテキストが生成されていきます。
一応、履歴みたいな感じで残しています。
捨ててしまっても構いません。
参考情報
AppleScript : ウィンドウをスクリーンキャプチャーする – GameSprit
Macターミナルコマンド「screencapture」のオプションまとめ | D-Box
AS Hole(AppleScriptの穴) By Piyomaru Software » GUI Scriptingによる記述(1) » Blog Archive