0

CAM::PDF を使用して、PERL で次のファイルを解析してみました。

http://www.roehampton.ac.uk/uploadedFiles/Pages_Assets/PDFs_and_Word_Docs/Human_Resources/VL%20Advert%20Biomedical%20Sciences%20Sep%2012.pdf

しかし、PDF を開いたときに表示されるよりも多くの改行が表示されているようです。これが私のサンプルコードのスナップショットです。

        my $file_name = 'file_3.pdf';
        my $filecontent;
        my @lines = '';
        my $save = "/home/tejas/Projects/Richmond/pdf/";
        $file_name = $save . $file_name;
        my $doc = CAM::PDF->new($file_name) || die "$CAM::PDF::errstr\n";

foreach my $p ( 1 .. $doc->numPages() ) {
    my $str = $doc->getPageText($p);
    if (defined $str) {
       CAM::PDF->asciify(\$str);
       print  $str;
    }
}

file_3.pdf へのリンクから pdf をダウンロードして保存しました。解析中にいくつかの行をつなぎ合わせるためにできることがあれば教えてください (特に、単語の途中で壊れている行)。

4

1 に答える 1

1

この小さなスクリプトを実行しました:

$ perl -MCAM::PDF -Mstrict - ~/Downloads/perldata.pdf 
my $doc = CAM::PDF->new($ARGV[0]) or die;
my $str = $doc->getPageText(1);
CAM::PDF->asciify(\$str);
my @blocks = split /\n\s*\n\s*\n/, $str;
foreach (@blocks) {
  $_=~ s/\s*\n\s*/ /g;
  print $_, "\n\n";
}
__END__

連続する空行でファイルをブロックまたは段落に分割します。次に、この段落内のすべての改行 (周囲のスペースを含む) を削除します。これをスペースに置き換えると (上で行ったように)、奇妙なスペースが得られます。代わりに正規表現を使用するs/\n//gと、スペースが必要な場所でいくつかの単語が一緒に実行されます。ただし、どちらの可能性も非常に読みやすいので、試してみてください。

理想的な解決策を得ることは容易ではありません。PDF 形式は、ドキュメントのグラフィカルな表現に関するものであり、セマンティクスに関するものではないことに注意してください。

最初の数行は次のようになります。

Department of Life Sciences

Visiting Lecturer s (1.5 FTE) in B iomedical S cience s

The popularity [...]
于 2012-09-11T01:36:37.250 に答える