namazu-ml(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: About pdf2txt



古川です。

>> On Mon, 22 Mar 1999 01:27:07 +0900 (JST), sugiura@xxxxxxxxxxxx (Sugiura Shiro) said: 
  > <199903211525.AAA10712@xxxxxxxxxxxxxx>の記事において
  > yokoi@xxxxxxxxxxxxxxxさんは書きました。
  > >>   生成される*.txtファイルが空、またはバイナリになってしまう
  > >>   なお、試したpdfファイルにテキスト情報が含まれていることは確認済み
  > 私もいくつか試してみましたが、うまくいくものと上記のような症状に
  > なるのがありました。覚えている限りでは、日本語が入っているPDFでは

私もさっそく試してみましたが、確かに空のファイルになったり、日本語文書
が意味不明のバイナリになってしまったりしました。

そこで、データとスクリプトを見ながら、いろいろいじっていたのですが、若
干ゴミ混じりながら、なんとか日本語も抽出できるようになりました。namazu
の素材くらいには、使えるのではないかと思います。

本来ならば、pdf のフォーマットを調べたり、ghostscript のソースを読むと
かするべきだとは思うのですが、面倒だったので、「目の前のデータを変換す
る」だけの、「いきあたりばったりパッチ」になっています。そのため、変換
できないものが続出、という可能性もあります。現時点で気になっている点は…

(1) 一連の処理を、どういう条件で実行したらよいのか分からなかったので、
    '-j' というオプションをつけたときのみ実行するようになっています。
    英語 PDF で '-j' をつけると、逆に文字化けするかもしれません(不明)。

(2) 記号は変換していません。そのため、日本語の文書中に 8bit 文字が不用
    意に現れたりします。これは文字化けの原因になるので、'-o' オプション
    を強く推奨します。

(3) その他、こちらで分かった範囲外のコードについては、'-o' オプションを
    つけると、空白に変換し、つけないと、ゲタ ('〓') に変換してエラーを
    出力します(終了はしません)。

(4) 手もとのデータの中に、FlateDecode というオプションがついているらし
    いものがあるのですが、これはなぜか inflate() が Z_DATA_ERROR を返し
    てきて変換できない、という問題が残っています。

    これはデータとニラめっこして分かるようなものではないので、放ってあ
    ります。
    (ちなみに、そのデータは、ghostscript でも読めなませんでした)


(5) *.txt が空になってしまうのは、PDF ファイルの先頭に 128 バイトのヘッ
    ダ (MacBinary というやつでしょうか) のようなものがあるためみたいな
    ので、その場合は、単純に先頭 128 バイトを無視するようにしてしまいま
    した。

(6) 私の遭遇した問題と、横井さんやすぎうらさんが遭遇した問題は、似て非
    なるものかもしれません。そうするとお役に立てませんが、あしからず。


http://www01.tcp-ip.or.jp/~furukawa/patch/

に置いてみました。

-- 
Rei FURUKAWA 
furukawa@xxxxxxxxxxxx