初版公開日: 2011年01月16日
最終更新日: 2011年09月14日

PDFチェックツール (pdf-checker)

このツールは複数のPDFファイルの情報を一括してチェックするためのツールです。 もともと、図書館等における大量の紙資料をスキャンする必要がある場合において、納品されたPDFファイルやOCRソフトウェアが出力したPDFファイルを、(ある程度まで)自動的にチェックしたいというニーズに対応するツールとして試作したものです。 現在、以下の項目をチェックして出力する機能を有しています:

更新履歴

2010-09-14
バージョン 20110914 を公開。
出力形式を大幅に変更しました。
PDFファイルにセキュリティ設定がかかっている場合、その情報を出力するようにしました。
一部のTIFF画像埋め込みファイルがエラーになってチェックできなかった不具合を修正。
パスワードプロテクトされたファイルの処理に失敗し、ファイル内容のチェックができなかった問題に対応しました。
2010-01-16
初版(20110116)を公開。

ダウンロード

pdf-checker は GNU AGPL version 3 に従ったフリーソフトウェアとします。

※最新のソースコードは http://github.com/masao/pdf-checker/ から入手できます。

利用方法

Javaで書かれていますので、Widnows/Mac/UnixなどOS環境を問わず使えます。 利用にはまずJavaをコマンドラインから使えるようにインストールしておくことが必要です。 必要であれば http://www.java.com/ja/download/ からダウンロードしインストールしてください。

Javaがインストールされているようなら、 上記のバイナリーパッケージ(pdf-checker-YYYYMMDD.zip)をダウンロードし展開してそのまま使ってください。 本ツールを使うには、パッケージを展開したフォルダにコマンドライン上で移動し、下記のように java -jar PdfChecker.jar に続けて、チェックしたファイル名を指定します:

 % unzip pdf-checker-YYYYMMDD.zip
 % java -jar PdfChecker.jar pdf/2010J00*.pdf
 pdf/2010J0001.pdf	version	3
 pdf/2010J0001.pdf	encryption	false
 pdf/2010J0001.pdf	creationdate	D:20060627211618
 pdf/2010J0001.pdf	producer	PDFlib 4.0.3 + PDI (SunOS 5.8)
 pdf/2010J0001.pdf	pages	8
 pdf/2010J0001.pdf	page1	pagesize	Rectangle: 595.0x842.0 (rot: 0 degrees)
 pdf/2010J0001.pdf	page1	imagetype	png
 pdf/2010J0001.pdf	page1	dpi-x	346.8101
 pdf/2010J0001.pdf	page1	dpi-y	346.06174
 pdf/2010J0001.pdf	page1	text length	83
 pdf/2010J0001.pdf	page2	pagesize	Rectangle: 595.0x842.0 (rot: 0 degrees)
 pdf/2010J0001.pdf	page2	imagetype	png
 pdf/2010J0001.pdf	page2	dpi-x	346.8101
 pdf/2010J0001.pdf	page2	dpi-y	346.06174
 pdf/2010J0001.pdf	page2	text length	87
 pdf/2010J0001.pdf	page3	pagesize	Rectangle: 595.0x842.0 (rot: 0 degrees)
 pdf/2010J0001.pdf	page3	imagetype	png
 pdf/2010J0001.pdf	page3	dpi-x	346.8101
 pdf/2010J0001.pdf	page3	dpi-y	346.06174
 pdf/2010J0001.pdf	page3	text length	0
 pdf/2010J0001.pdf	page4	pagesize	Rectangle: 595.0x842.0 (rot: 0 degrees)
 pdf/2010J0001.pdf	page4	imagetype	png
 pdf/2010J0001.pdf	page4	dpi-x	346.8101
 pdf/2010J0001.pdf	page4	dpi-y	346.06174
 pdf/2010J0001.pdf	page4	text length	1794
 .....

上記の使用例の出力では、PDFファイルのPDFバージョン(version)が3であること、暗号化等のセキュリティ(encryption)がかかっていないこと、PDF生成日時(creationdate)は2006年6月27日であること、ファイルの生成ソフトウェア(producer)はPDFlibというツールであること、ページ数は8ページ(pages)であることがわかります。 さらに、このPDFファイルの各ページは「595x842」という縦横サイズ(pagesize)からなり、約300dpiの解像度(dpi-x/y)の画像が、PNG形式(imagetype)で圧縮されて埋め込まれていることがわかります。 テキストもページにより、80〜1800字程度(text length)埋め込まれており、OCR等の処理がかかっていることもわかります。

なお、引数のファイル名を複数指定することで一括指定になります。 複数ファイルを指定した場合は第一列にファイル名が出力されます。

出力形式は単純なタブ区切りテキストですので、テキストファイルとして書き出して、Excelなどから読み込んでチェックすることを想定しています。

TODO

下記は2011年9月現在で未対応の項目:

エラー処理
PDFファイル以外の形式や、読み込みにエラーが発生するようなファイルに対して頑健でないため、途中でエラーとして落ちてしまうことがある。
スキャンによる画像PDFではなく、Word等から作成されたPDFファイルでは、埋め込まれる画像が多様なため、エラーが発生したり、出力内容がおかしなものになる場合がある。

謝辞

本ツールでは、PDF解析のためにiText Javaライブラリーを、セキュリティ暗号化ファイルの読み込みのためにBouncy Castle Crypto APIsをそれぞれ用い、同梱して再配布しています。各ツールのソースコードおよび詳細な情報は下記のサイトから入手可能です:

本ツールの構築にあたっては、平成22年度CSI委託事業「機関リポジトリ担当者の人材育成」における技術ワークショップ(平成22年9月15日〜9月18日 軽井沢セミナーハウスにおいて開催)の調査を参考にしています。


高久雅生 (Masao Takaku)
http://masao.jpn.org/, tmasao@acm.org