OSSでPDF作成とOCR変換を行う
モチベーション
- WindowsやMacで高いAdobe CCを契約し続けるのはオープン化が求められている世の中でAdobe Acrobat DC proに頼り続けるのは、危険な気がしてきた。
- プロプラエタリなコードは、中身がブラックボックスになっているから神秘性が増し、一部の熱狂的信者を得やすいという傾向があるらしい。神秘性って特定の人に伝染するミームみたいなものらしい。
- オープンソースは多角的な視点で評価され、多角的な進化を遂げていく。品質は一定せず、素晴らしいものからジャンクまで。ただし基盤は共通しているので、上に乗るソフトウェアの可塑性は高い。
神秘性を零落させたPDFが欲しい
- できるらしい。まじか。
- そもそもの勘違いが、PDFフォーマットがAdobe社の独占状態だと勘違いしたこと。仕様書は複雑でちょっと余裕の時間で読み上げて再実装できる量ではない。
- ISO標準規格なはずなのに、アタッチメント(独自拡張)の範囲が広く、やっぱりAdobe社のPDFジェネレータを使うべきでない。もっとシンプルであるべきだ。
- ImageMagickというソフトウェアがISOに基づいた再実装頑張っているらしい
オープンソース流にサーチャブルPDFを作成する
- ImageMagickをAURからダウンロードしてコンパイル
- Google謹製のOCRソフトウェア tesseractと、学習データ tesseract-data-jpnをAURからコンパイル&インストールすることで、画像認識などが可能である -- ただ、tesseractだけではpdfを解析できない
- PDFのpypdfocrのモジュールをインストールすることでただのpdfから、OCR情報を組み込んだocr(サーチャブル)-pdfを作成可能である
PDFを作成する際の注意点
- メモリをバカ食いする;感覚的にはメモリ6GByteのスワップ10GByteぐらいを700枚のA4を処理すると消費する
- 変換オプションが必須; convert -limit memory 6GiB -limit map 10GiB -define registry:temporary-path=/data/tmp *.jpg -- これくらいないとimagemagickで768の限界ファイル数をまとめて一つのPDFにすることはできない
- 環境変数 MAGICK_FILE_LIMIT を設定することで限界突破できるかも?
pypdfocr
- pypdfocr -l jpn target.pdf これを行うだけで、OCR化されたpdfが出てくる 作業を行うディレクトリを一時ファイルで汚しまくるので、注意