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
ページまたはセクションの下に移動します。編集中にキーを押すと、選択したrTAB
vim列がタブに置き換えられます。
最後に、あなたのコメントでは、出力テキストに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
。