ユーティリティを使用してpdftotext
PDFファイルをテキストに変換します。
pdftotext *.pdf *.txt
操作はしますが、線が正しく機能せず、機能しないときに新しい線を作成します。これを行うことができる他のユーティリティはありますか?そうでなければ、sed
新しい行を殺すのが役に立ちますか?
答え1
あなたが望むものに依存します。たとえば、
目次が忠実に表示されるようにレイアウトを維持したい場合は、この-layout
フラグを使用できます。ネイティブストリームが必要な場合はこの-raw
フラグがありますが、必要なだけ効率的には機能しません。まず、テキストファイルに変換することをお勧めします。たとえば、見てみましょうtest.pdf
。次に、
$ pdftotext test.pdf test.txt
これにより、pdftotextユーティリティの出力を含むtest.txtというファイルが生成されます。次に、新しく生成されたテキストファイルにPerlコードを書きます。
$ perl -0pe "s/([^\n])\n([^\n])/\1 \2/g;" test.txt > final.txt
これでわかります。ファイルfinal.txt
には必要な内容が必要です。 Perlコードをそのままコピーし、必要に応じてファイル名を変更できます。お役に立てば幸いです。
答え2
Calibre eBook Converterはあなたのニーズを満たすことができます。これには、次のタスクに使用できるグラフィカルユーザーインターフェイス(GUI)とコマンドラインがあります。
ebook-convert myfile.input_format myfile.output_format --enable-heuristics [other-options]
元の段落構造を推測しながら、pdfをepubまたはraw .txt形式に変換できます。プロセスを微調整するのに役立つさまざまなオプションがあります。以下を参照してください。 https://manual.calibre-ebook.com/ generate/en/ebook-convert.html#heuristic-processing
「不要なハイフン除去」機能は `--enable-heuristicsで有効になります。ハイフンでつながった単語の分析は、テキスト自体である辞書に基づいています(どこかで「文書」という単語を見つけたら、「文書」ということだけを知ってください)。 「端にハイフンがある場合は、ハイフンを削除する必要があります。)
また、--unsmarten-punctuation
クールな引用符、ダッシュ、楕円を単純な等価物"'-...
に変換します。
また、--html-unwrap-factor parameter
説明では、「拡張する線の長さを決定するために使用される尺度です。有効な値は0から1の間の小数です。デフォルトは正中線の長さの直下です。少数しかない0.4
場合、文書はこの値を拡張して減らす必要があります。 」
私のテストドキュメントの場合、デフォルト値は低い値でもうまく機能しますが、結果は優れています。
ebook-convert mydoc.pdf mydoc.txt --enable-heuristics --html-unwrap-factor 0.2
結果は追加の処理に十分です(たとえば、翻訳メモリの.tmxファイルを生成するための文書ペアのテキストの並べ替え)。
Linuxで(サブ)フォルダ内のすべての.pdfファイルを処理するには、次の手順を実行します。
find . -name "*.pdf" | while IFS= read -r file; do if [ ! -e "${file}.txt" ]; then ebook-convert "$file" "${file}.txt" --enable-heuristics --html-unwrap-factor 0.2 ; fi; done
(注:ファイル名はハイフンで始めることはできません。)
GUIマニュアルは次の場所にあります。https://manual.calibre-ebook.com/conversion.html#heuristic-processing
複数の列で構成される表の文の結果はひどいです。ここで Tabula(https://tabula.technology/)役に立ちます。
以下は、使用例のスクリーンショットです(ここでは、段落が正しく検出されたことをより明確に示すために、出力は.epubです)。