人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

PDFからテキストを抽出する

自分が収集した論文データベースを対象にいろいろ言語処理してみようと考え中。そのためにはまずPDFファイルからテキスト部分を抽出できなくてはいけない。調べてみたところXpdfというツールが見つかったので使い方メモ。ソースコードからコンパイルもできるし、Windowsならバイナリもある。

以下、インストール手順。とりあえずxpdf-3.02.tar.gzと日本語PDF用の言語パックxpdf-japanese.tar.gzをダウンロードした。ソースコードからインストールする場合は、freetype2とt1libが必要なので入れておきインストール場所を確認しておく。うちのPCにはすでに /opt/local にインストールしてあった。

  tar xvzf xpdf-3.02.tar.gz
  cd xpdf-3.02
  ./configure --with-t1-library=/opt/local/lib \
                   --with-t1-includes=/opt/local/include \
                   --with-freetype2-library=/opt/local/lib \
                   --with-freetype2-includes=/opt/local/include/freetype2
  make
  make install

言語パックは下のようにインストール。add-to-xpdfrcというファイルに書いてあるパスに日本語フォント情報をコピーしてるだけ。

  tar xvzf xpdf-japanese.tar.gz
  cd xpdf-japanese
  mkdir -p /usr/local/share/xpdf/japanese
  cp -R *.unicodeMap *.cidToUnicode CMap /usr/local/share/xpdf/japanese
  cat add-to-xpdfrc >> ~/.xpdfrc

PDFファイルをテキストに変換するにはpdftotextコマンドを使う。-encオプションで出力テキストの文字コードを指定できる。Shift-JIS、EUC-JP、ISO-2022-JP、UTF-8が指定できた。

  pdftotext test.pdf -enc UTF-8

英語PDFの場合はエンコード指定はいらないけど日本語PDFでは必須なのでとりあえずつけておく(つけないと日本語が抽出できない)。コマンドを実行するとtest.txtというファイルにテキストが出力される。