MacのOCR(1)からの続き
以前(2023年1月),MacのOCRプログラム(tesseract)を試したことなどすっかり忘れていた。全く別の方向からの話題をみかけたので,しばらく熟成させた後に試してみた。
一つは,165行のシェルスクリプト(ocr.sh)である。
「純bash → 一時的にAppleScript(AppleScriptObjC)を起動 → macOSのVision/QuartzフレームワークでOCR」という三層構成。入出力は「画像(jpg/png)またはPDF → 標準出力に認識テキスト。引数で言語(ja/en)とPDFをラスタライズするDPIを切り替え。制御のキモは、PDFはページごとに指定DPIで画像化→白背景で正規化→VisionでOCR、画像も同様に白背景で正規化してからOCR、という“前処理の徹底”と、“Visionへの最小限・最適な設定”にある。
しかしこれでは縦書き日本語がうまくいかないことがあるらしい。そこで示されたのが,macOSのビルトインOCR機能をmacOSの「ショートカット」アプリで呼び出すというものだ。ショートカットは,他のジョブでもこれまで何度もトライしてきたのだが,すべて途中で挫折してしまった。ちゃんと勉強せずに行き当たりばったりでやるとそうなる。
今度もだめかなと半分あきらめつつ,ChatGPTにやり方を繰り返し教えてもらうことで,なんとかうまくいった。Scratchみたいなビジュアルプログラミング言語はどうも苦手だ。年寄りにはよけい難しく感じる。普通のエディタでテキスト入力したいよ。こうしてつくったスクリプトが,Extract_text_from_files(下図参照)だ。
これをコマンドラインから次のように起動する。
shortcuts run "Extract_text_from_files" -i ~/sample.pdf -o ~/sample.txt
入力ファイルは,pdf,jpg,png である。出力ファイルを省略すると標準出力に流れる。実際に試したところ,縦書きのpdfファイルもjpgファイルもpngファイルもうまくいっている。認識精度はtesseractよりもずっとよかった。
図:はじめてのショートカット

0 件のコメント:
コメントを投稿