スポンサーリンク

紙の本のOCR

2024 年 2 月 20 日 コメントをどうぞ コメント

https://note.com/spoonik/n/nad19b4cb34e5

この御方に刺激を受けて自分も紙の本のOCRをやってみることにした。

対象の本は、かつて使っていた中国語学習のテキスト。 それをスキャンし、PDFにして、OCRする。

まず使ったアプリは上記でもオススメされていた「vFlat Scan」というアプリ。

https://apps.apple.com/jp/app/vflat-scan-pdf-scanner/id1540238220

このアプリは確かに素晴らしい。 紙の本のスキャンは手作業ゆえにどうしても時間がかかる部分だが、このアプリを使うことでかなり時短できたと思う。 それでもこの作業が一番大変なので音楽でも聞きながらやるといい。 このアプリは自分の使い方なら無料の範囲で使えた。

次にアプリでスキャンした画像をiPhoneの写真アプリへ移動させる。 これはアプリ内の操作で可能。

続けてiPhone写真アプリでスキャンした画像を選択し、iPhone標準のファイルアプリへ移動。 ファイルアプリはiCloudを選ばず、このiPhone内を選ぼう。専用のフォルダを作っておくといい。

そしてスキャン画像を入れたフォルダをフォルダごと圧縮し、zipファイルにまとめる。 これはiPhoneのファイルアプリの機能で可能。

この状態だと1ファイルなのであとは好きなようにできる。 iPhone内でPDFにしようとすると、(画像が多いと)フリーズするので、ここからの作業はPCで行う。

Windows 11だと、画像を全選択した状態で右クリック→「印刷」→「Microsoft Print to PDF」で画像全てを1つのPDFにできる。 (Windows PCでもそれなりの時間がかかったのでiPhoneで数百ページは無理だろう) なお、ちゃんと古いファイルかファイル名順にページが並んだ。

次にGoogle DriveでGASを使ってOCRをしようと考えたが、数百ページあるOCRは恐らく時間がかかる。 GAS実行の制限時間6分間に引っかかるだろう。 ファイルごとであれば作業の分割をすることもできるだろうが、今回は1つのPDFなので、恐らくOCRを分けるのは難しいと考え断念。

また、GoogleだとVision APIというのがあるらしい。 しかし有料。かつ動作がクラウド上になるので未経験でこちらも断念。

https://cloud.google.com/vision?hl=ja

続けて調べるとGoogle Drive APIがあるのを知った。 これを使うことで、ローカル環境からAPIを通じてOCRができるらしい。 Pythonだと「google_drive_ocr」というライブラリが公開されている。

https://github.com/hrishikeshrt/google_drive_ocr

これはかなり簡単で、予めGoogleで登録し、ダウンロードしたjsonの認証だけでいい。 1ページのテスト用PDFを作って試したが、ちゃんと動いた。 Pythonだと数行だ。

あとは数百MB、数百ページのPDF(画像)もこのAPIでOCRできるか、である。 ちなみに、Google Driveで何も考えずにアップロードしただけでOCRされるには2MBまでという制限があるらしい。2MBまでの画像はGoogle Driveにアップロードするだけで自動的にOCRされ、テキスト検索できるようになる。 また、上述したがGASで自発的にOCRする場合は6分間の制限がある。 今回のファイルは確実にそのどちらにも引っかかる。

・・結果としてはできなかった。 「400: Bad Request An error occurred while performing OCR.」というエラーが返された。 6分も経ってない状態ですぐにこのエラーが出たので実行時間によるエラーではないと考えられる。 ファイルサイズが大きいとできないのだろうと思う。

仕方がないのでクラウドのAIによるOCRは諦め、ローカルでOCRすることにした。 ローカルではOCRソフトをインストールすることでPythonでもできるが、お手軽にやるならAdobe Acrobat Proが良いだろう。幸いにも契約中だ。 Acrobatではツールの「スキャンとOCR」→「テキスト認識」で、ページ全体にOCRをかけることができる。言語も選択可能なので中国語も問題ない。 しかしこれもそれなりに時間がかかる。体感的には1ページ当たり数秒。5秒/ページだとして、300ページあれば1500秒=25分かかる。

また、これは何らかのテキストファイルが出力されるわけではない。 以下のように、OCRされたテキストが埋め込まれたPDFになるだけだ。

そこでPDF全体に埋め込まれたテキストを出力するため、Chromeで当該PDFを開き、テキストを全選択(Ctrl+A)しコピー(Ctrl+C)。それをテキストエディタに貼り付けた。

Pythonなどでテキストを抜き出すより、こちらの方がテキストの有用性が高いコピペができたと思う(Acrobat上でもコピペはやりづらいと思う)。 ただ、残念ながらOCRの精度や質は必ずしも高いとは言えない結果だった。 点数をつけるとすると70点くらいかな。自分の用途的には合格点ではあるが。 今回の本も、小説などと異なり、学習テキストの体裁なのでOCRしにくいのだと思う。

考えていた以上に色々と手間がかかったが、これで紙の本が一応テキスト化できた。 NotionにPDFをアップロードし、同じページでテキストを本文に貼り付ければ全文検索もできるようになるはず。 (大量に行うのは手間暇を考えると現実的ではないと感じる)

完璧でないため、やはり最適なOCRの結果を得るにはクラウドでAI OCRを使う方法しかなさそうだ。 それでも手間や作業時間はあまり変わらないと思う。

スポンサーリンク
スポンサーリンク
カテゴリー: 未分類 タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。

CAPTCHA