Pdftotextは段落分割を行いません。

Pdftotextは段落分割を行いません。

OSX、Homebrewはpdftotext動作しますが、段落の区切りを尊重しません。-pagebrk、、、-eol macを試してみましたが、-eol unix段落分割の問題が常に続くようです。これが典型的な問題ですか?

答え1

PDFは、テキストが必ずしも合理的な順序になっていない奇妙なものです。

pdftotext-layoutオプションを試してください。

PDFに応じて、完全に読みやすいマルチ列テキストファイルを提供できますが、特に80列を超えるワイドスクリーンモニタの場合は、単一列テキストがより便利です。

-

複数のテキスト列を単一の列に変換する最も簡単な方法は、vimを使用してテキストを編集し、列間にTABを挿入し、perlスクリプトを作成して列を各ページの1列にマージすることです(ページはフォームフィードとして区切り、^L)。これは時間がかかり、退屈する可能性があります。

これを行うためにPerlスクリプトを作成しようとする最初の試みは、列間の空白文字の数で列を識別しようとしましたが、残念ながらこれは1〜2個の空白文字から5個以上に増えました。同じ事実があります)。余分なスペースがあるため、単語間の通常のスペースと列の間のスペースを自動的に区別する方法はありません。pdftotext出力のテーブルをまったく処理できません。

TAB文字を手動で編集して挿入し、列を分割する方がはるかに簡単です。 vi / vimを使用すると、これらの繰り返し編集が非常に簡単になります。 TABを挿入するのに便利なカーソル位置を見つけて、キーを押してカーソルをCtrl-Vページまたはセクションの下に移動します。編集中にキーを押すと、選択したrTABvim列がタブに置き換えられます。


最後に、あなたのコメントでは、出力テキストにUnicode文字「右側の一重引用符」(U + 2019)が表示されていると述べました。これは完全に正常な現象です。多くの(ほとんど?)PDFにはASCII文字に限定されないため、Unicode文字(スマート引用符、ダッシュ、楕円など)が含まれています。

答え2

私はいくつかの便利なタスクを実行する簡単な1行コードを作成しました。しかし、PDFは奇妙で常に機能していないことに注意してください。

sed 's/\.$/.\n/; s/• /\n/; /^[0-9]/ s/$/\n/' | perl -00 -pe 's/\n(?!\Z)/ /g'
  • 文にピリオドがある場合、sed コマンドは新しい行を追加します。これは段落の終わりである可能性があるからです。 (この仮定は何度も失敗しました。)
  • アイテム別のリストが表示されたら、新しい行を追加してください。
  • 行が数字で始まる場合は、ヘッダーの可能性が高くなります。新しい行を追加してください。

改行で区切られた行セットがある限り、これはおそらく1つの段落です。 perl コマンドは、これらのグループを 1 行に配置します。このPerlコード行の説明は次のとおりです。

https://unix.stackexchange.com/a/479229/245582

気づく私はDebianのpdftotextを使いますpopper-utils

関連情報