前置き:ScanSnapでスキャンしたPDFファイルはOCR化せずに保存したものもあると便利
ScanSnap(iX2500)+Durodex200DXの組み合わせは便利ですね
の続きです。
前回スキャンによって作成したPDFファイルを文字検索可能なPDF(OCR化したPDF)として保存していませんでした。日経ソフトウエアは段落構成が複雑かつプログラムのコードが掲載された段落もあるため、正確に段落を把握し、適切な改行が行われたOCR化が困難です。
そのため、さしあたって今の段階でできるレベルでOCR化を行い、将来もっとよいOCRプログラムが公開されたときに備え、文字検索可能な加工を施す前のスキャンだけを行った状態のODFファイルは別に保存しておくことにしました。
以上前置きです。
OCRmyPDF(+OCRmyPDF-AppleOCR)使ってOCR化(Mac編)
今回の本題はこちらです。
日経ソフトウエアのOCR化には、ScanSnapHomeのほかいくつか試してみましたが、作成に要する時間とOCR化の精度のバランスが良かったのが、このOCRmyPDFにOCRmyPDF-AppleOCRを組み合わせる方法です。
この方法では、OCRmyPDFからAppleのVisionフレームワーク(iPhoneで写真をタップし続けると文字を認識してくれる機能で利用されているもの)を利用してOCRを行います。
OCRmyPDFはPythonで動作するため、環境構築が必要です。環境はPoetryで構築しました(参考:当方のPoetryは2.4.1です)。
環境構築用のフォルダで先にPythonのバージョンを指定します。対応していればどのバージョンでもよいと思いますが、今回は以下のバージョンを指定しました。
pyenv local 3.14.6続いて関連モジュールを導入します。環境構築用のフォルダに以下の記載をしたpyproject.tomlを保存します。
[project]
name = "ocrNikkeiSoftware"
version = "0.1.0"
description = ""
authors = [
{name = "user",email = "aaaa@aaa.co.jp"}
]
requires-python = ">=3.14,<3.15"
dependencies = [
"ocrmypdf (>=17.4.0,<18.0.0)",
"ocrmypdf-appleocr (>=0.3.4,<0.4.0)"
]
[tool.poetry]
package-mode = false
[build-system]
requires = ["poetry-core>=2.0.0,<3.0.0"]
build-backend = "poetry.core.masonry.api"
その後、以下のコマンドを実行し、poetry環境を作成します。
poetry update環境構築後は作業フォルダはpoetryにより.venvが作成され、以下のようになっているはずです。

OCRmyPDFを起動するコマンドは以下のとおりです。
Poetry run ocrmypdf -l jpn \
--plugin ocrmypdf_appleocr \
--appleocr-recognition-mode accurate \
'/OCR化前のファイル保存パス/Raw日経ソフトウエア202601.pdf' \
'/OCR化後のファイル保存パス/日経ソフトウエア_R2.pdf'-l指定で言語指定ができますが、jpn指定があればアルファベットの記述が主にプログラムソースであればeng指定がなくても精度に違いはなさそうです。
実行結果
3分30秒ほどで156ページのOCR処理が完了しました。Macのニューラルエンジンコアが利用されているそうでとても速い。

段組が複雑なところは、正しく段組を認識できず、並んでいる隣の段落まで文字選択が連続してしまいますが、ざっと確認したところ文字化けや誤認識は特にありませんでした。
段組の認識に多少の難はあるものの、OCR化に要する時間が短いことを考えるとMacでOCR化するには非常に有効な方法と感じました。

