
図版や組版の仕事をしていると,画像化された文字を見ながらテキストを打ち込んだり,アウトライン化された文字を再入力することがよくあります。
例えばこんな状況には覚えがあるのではないでしょうか。
- 明らかにデジタルデータとして文字を打ち込んであるのに,印刷した紙のスキャンPDFを渡される
- 図版原稿に出典(他社本や統計資料,入試問題など)のスキャン画像が貼ってあり,文言は変えずに使う
- 支給されたIllustratorデータの文章に修正指示が入ったが,テキストはアウトライン化されている
よくあることですが「どうして1度テキストデータになったものを繰り返し入力しなければならないのか」と思ってしまいますよね。
そこで今回は,スクリーンショットにOCRにかけて文字を抽出し,クリップボードに収めるAutomatorサービスを紹介します。
それってどんなもの?
以下のような流れで文字を復元するAppleScriptです。
- サービス実行でスクリーンショット(command+shift+4に相当)を起動,ドラッグで対象の範囲を指定する
- 撮った画像をOCRで解析,テキストデータを生成する
- テキストデータをクリップボードにコピーする
肝心のOCR機能は,PDFpenProという初期設定では入っていないアプリを使います。なので別途インストールする必要があります。
PDFpenProって?
PDFpenProはTextExpanderで有名なSmile社が開発している,PDFを編集するためのアプリです。スキャンした画像にOCRをかける機能がついていて,それをAppleScriptから呼び出せます。
以前は英語など限られた言語のみ認識可能でしたが,Mac OS 10.11以降で使えるバージョン9から日本語にも対応しました。
インストールが簡単で,OCRを使うのにインターネット接続がいらず,おまけに機能制限つきの試用版なら無料で使えます。制限というのも,作ったPDFに透かし(ウォーターマーク)が入るのみです。気軽に試せますね。
使う気になってきましたか?ではPDFpenProのサイトからアプリをダウンロード・インストールしてください。
サービスのインストール
Automatorサービスのダウンロードはこちらです。
ダウンロードしたファイルを開くと,インストールするか訊かれます。インストールを選んでください。基本的にはそれだけで使えるようになります。
メニューバーの [アプリケーション]:サービス:shotOCR_PDFpenPro を選べば実行です。[アプリケーション]の部分は,Finderなど前面に出ているアプリの名前が入ります。
使えるようにならない,ショートカットを設定したい,など詳しい情報がほしい場合は以前の記事【解決】クリックポストの半角全角変換を簡単にしたい!を参照してください。似たようなことをしています。
使いかた
サービスを実行するとスクリーンショットが起動するので,撮る領域を指定してください。数秒待つと文字認識が終わり,クリップボードに文字が入ります。非常にシンプル。
うまく復元できたでしょうか。実は私はいまだにOS 10.10を使っていて,日本語認識を試せていません。英数字だと十分精度が高いのですが……試してみた方はぜひ結果を教えてください。
2017.09.07 追記
日本語OCRの結果をいただきました。ありがとうございます。個人的には,数秒で生成できるならこの品質でも十分役に立つ印象でした。
日本語もOCRできました!
精度はイマイチ……かな? pic.twitter.com/FHbYfjE9Wr
— MD5500 (@MD5500) 2017年9月6日
これでまた少し仕事が速くなりました。今日もさっさと仕事を切り上げて好きなことをしましょう!
シリーズ記事:
- 【解決】画面にOCRをかけて文字を抽出したい!(1)
- 【解決】画面にOCRをかけて文字を抽出したい!(2)
- 【解決】画面にOCRをかけて文字を抽出したい!(3)
コードはこちら
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 |
on run set cancel_btn_name to "キャンセル" as text -- temporary itemsフォルダにスクリーンショットを保存する set temp_folder to POSIX path of (path to temporary items) set capture_path to temp_folder & "sttk3_ocr.png" set quoted_path to quoted form of capture_path set capture_com to "screencapture -srx -t png " & quoted_path try do shell script capture_com on error return end try set captured_file to (capture_path as POSIX file) as alias -- OCRにかけて文字を取得し,スクリーンショットは捨てる try set str to my recognize_text_pdfpen(captured_file) my delete_file(captured_file) on error error_message number error_number my delete_file(captured_file) display dialog "Error: " & error_number & ". " & error_message buttons {cancel_btn_name} default button 1 end try -- クリップボードに収める set the clipboard to str return str end run -- PDFPenProでOCRを実行する。ver.9(OS 10.11以上)からは日本語にも対応してるらしい(未検証) on recognize_text_pdfpen(target_file) tell application "PDFpenPro" set res to "" open target_file set visible of every window to false tell document 1 ocr repeat while performing ocr delay 0.2 end repeat set res to text content close saving no end tell end tell -- 必ず入る終端の改行を削除する if (length of res > 1) then set res to (characters 1 thru -2 of res) as text return res end recognize_text_pdfpen -- ファイルをゴミ箱に入れる。即時消したいときはrmでも使うといい on delete_file(target_file) --do shell script ("rm " & quoted form of (POSIX path of target_file)) tell application "Finder" to delete target_file end delete_file |
このサイトで配布しているスクリプトやその他のファイルを,無断で転載・配布・販売することを禁じます。
それらの使用により生じたあらゆる損害について,私どもは責任を負いません。
スクリプトやファイルのダウンロードを行った時点で,上記の規定に同意したとみなします。