PDF(画像)をテキストtxtファイルに変換する方法

最も簡単な方法は、pdf内のすべてのテキストを選択し、クリップボードにコピーして、クリップボードからテキストファイルに貼り付けることです。 そして、あなたは正しいでしょう。 しかし、これは私たちの場合ではありません。 PDFファイルは、複数ページのドキュメントをスキャンした結果です。 つまり pdfコンテンツはテキスト画像です。



画像








提案されたソリューションはWindows-8で実装されていますが、少し調整することで、LinuxおよびOS Xで非常にうまく使用できると思います。

Abbyy FineReader、MS Word、MS OneNoteは、画像をテキストに変換するタスクに対応しています。 画像をオンラインに変換できるサイトもあります: http : //www.ocrconvert.com

提案されたソリューションは無料のユーティリティを使用しています。 優先順位は、コマンドラインでの作業でもありました。



すべてのpdfページを画像ファイルに変換します



2〜3ページある場合は、PrintScreen関数を使用できます。 Windowsでは、このためにキーボードに別のボタンがあります。 そして、Mac OS Xでは、トリッキーなキーの組み合わせ:Shift + Command + 4の3つのキーを押す必要があります。マウスで画面の目的の領域を選択し、デスクトップで結果のファイルを探します。 しかし、ページが多い場合は、別の方法を探す必要があります。



幸いなことに、これを行うことができるStduViewerプログラムがあります。 [ファイル]→[エクスポート]→[画像として]に移動します。 表示されるウィンドウで、PNGタイプ、解像度300 dpiを選択し、結果の画像ファイルを配置するパスを設定します。 保存されたファイルの名前のテンプレートでは、ページが10を超える場合、%PN%を%0PN%に変更する価値があります。



kolgrim99は、pdfドキュメントをjpgファイルに変換するためのコマンドラインで使用できるxpdfパッケージのユーティリティを提案しました。 彼の提案は次のとおりです。

<<タスクが単にスキャン(または他の写真)で大きなPDFファイルを消化することである場合、xpdfセットのユーティリティを使用できます。多くのすべてがありますが、写真にはpdfimages.exeが必要です。 構文は次のようなものです。

pdfimages.exe -j some_file.pdf C:\ images \


パスの最後にある最後の引数には、必ず '\'を入力してください。そうしないと、取得されません>>



ページ画像ファイルをテキストに変換する



HPが開発し、Googleは画像をテキスト( OCR )に変換するtesseractライブラリのソースコードを開きました。 tesseract-ocrプログラムをインストールします。

インストール中にロシア語を認識するには、「追加の言語データ」でロシア語のチェックボックスをオンにします。



コマンドプロンプトで、次のようなコマンドを実行します。



tesseract.exe image_01.png res_01.txt -l rus
      
      





テキストファイルを受け取ります。 各ページに対してコマンドを手動で実行できます。 Pythonでスクリプトを実行する方が簡単です:



 import os, sys import io sPathIn = "D:/Pictures/pict" sPathOut = "D:/Pictures/txt" sCmd = "\"C:/Program Files (x86)/Tesseract-OCR/tesseract.exe\" {} {} -l rus" os.system("cd \"C:/Program Files (x86)/Tesseract-OCR\"") dirs = os.listdir( sPathIn ) for file in dirs: filename, file_ext = os.path.splitext(file) sCmdRes = sCmd.format(sPathIn + '/' + file, sPathOut + '/' + filename + ".txt") print ("run> " + sCmdRes) os.system(sCmdRes)
      
      





一連のテキストファイルが見つかりましたが、それらは1つにまとめられたままでした。 これはペンで行うことができます。 しかし、Pythonでスクリプトを書く方が簡単でした:



 import os, sys import io sPathIn = "D:/Pictures/txt" sFileOut = "D:/Pictures/res.txt" dirs = os.listdir( sPathIn ) for file in dirs: filename, file_ext = os.path.splitext(file) if (file_ext == ".txt"): fOut = open(sFileOut, "ab") f = open(sPathIn + "/" + file, "rb") data = f.read() fOut.write(data) f.close() fOut.close()
      
      





これは完了することができます、なぜなら 基本的に、テキストは非常に読みやすいことが判明しましたが、テキスト内の場所では大量のリムが形成されました。

たとえば、テキスト付きの写真



このようなものに変換されました:

一時的な中断、中間の保存、一時停止状態からのモデリングプロセスの再起動、さまざまな初期条件の設定、搭載システムの障害、気象条件、時刻、さまざまな妨害要因(風、乱気流など)によるモデリングプロセスの管理;



したがって、次の段階が登場しました。



テキストのエラーの修正



LanguageToolプログラムを使用します。 コマンドラインでの作業に興味があるので、 「独立バージョン」をダウンロードしてください。 LanguageToolが動作するにはJavaが必要です。



ネイティブディレクトリから開始し(現在のディレクトリが外部の場合は何らかの理由でWindows 8.1で動作させたくありませんでした)、完全なファイル名(ディレクトリを含む)を示しました。 たとえば、コマンドプロンプトでコマンドを実行すると、次のようになります。



 java -Dfile.encoding=UTF-8 -jar languagetool-commandline.jar --help
      
      





...その後、追加のコンソールが起動し、正直にヘルプを書いて、1秒以内に安全に閉じます。 コンソールに何が書き込まれるかを確認するには、この行を中に入れてコマンドbat-fileを実行する必要があります。 おそらく、javaには他のコマンドラインパラメーターがあるため、余分なコマンドは開始されません。 コンソールですが、これは私には不明です。



テキストファイルのエラー修正コマンドは次のとおりです。



 java -Dfile.encoding=UTF-8 -jar languagetool-commandline.jar -a -l ru original.txt > corrected.txt
      
      





小さな文字から大きな文字への修正をオフにするために、行の先頭に追加のパラメーターが表示されました--disablecategories CASING、ファイル名-%1の代わりに、bat-file内の名前を引数として渡します。 合計で、batファイルの行は次のようになりました。



 java -Dfile.encoding=UTF-8 -jar languagetool-commandline.jar -a -u --disablecategories CASING -l ru %1 > %1-res.txt
      
      





-u引数を使用すると、文字列「Unknown words:」が修正されたテキストファイルの末尾に追加され、LanguageToolが認識しないすべての単語のコンマ区切りリストが追加されます。 したがって、このリストから間違った単語を修正することにより、テキストを改善できます。



Python 3.5とPyCharmが使用されました

ご清聴ありがとうございました!



All Articles