私は絶対的な初心者です。私は、例を類推することによって、コードを通して私のやり方をうなずきます。だから、用語の誤用については謝ります。 Python3マルチプロセッシング
- は、PDFファイルのために(自分のコンピュータ上のフォルダ)
- 検索フォルダをユーザの入力を取ります。私のpython 3に小さなコードを書かれている
コードは機能しますが、改善できると確信しています。しばらく時間がかかり、Poolsを使ってマルチプロセッシングを試してみると思いました。
私のコードはプールを作成するようです。私はまた、フォルダ内のファイルのリストを印刷する関数を取得することができますので、リストがある形式または別の形式で渡されているように見えます。
私はそれを動作させることができず、さまざまなエラーで繰り返しコードをハッキングしました。私は主な問題は、私は無知だと思う。
私のコードが始まります
ユーザ入力ブロックを(それが有効なフォルダなどでチェックし、ユーザーのディレクトリ内のフォルダを要求します)。関数としてループブロックについて
関数としてOCRブロックが(単一.txtファイルにコンテンツを出力し、次にPDFを解析)
(フォルダ内の各PDFの上にループになって、その上にOCRのブロックを実行する。
(はループブロックにディレクトリ内のファイルのリストを供給することになっているマルチプロセッシングブロックは
戦争と平和を書く避けるために、私は以下のループブロックとマルチプロセッシングブロックの最後のバージョンを設定します。
#import necessary modules
home_path = os.path.expanduser('~')
#ask for input with various checking mechanisms to make sure a useful pdfDir is obtained
pdfDir = home_path + '/Documents/' + input('Please input the folder name where the PDFs are stored. The folder must be directly under the Documents folder. It cannot have a space in it. \n \n Name of folder:')
def textExtractor():
#convert pdf to jpeg with a tesseract friendly resolution
with Img(filename=pdf_filename, resolution=300) as img: #some can be encrypted so use OCR instead of other libraries
#various lines of code here
compilation_temp.close()
def per_file_process (subject_files):
for pdf in subject_files:
#decode the whole file name as a string
pdf_filename = os.fsdecode(pdf)
#check whether the string ends in .pdf
if pdf_filename.endswith(".pdf"):
#call the OCR function on it
textExtractor()
else:
print ('nonsense')
if __name__ == '__main__':
pool = Pool(2)
pool.map(per_file_process, os.listdir(pdfDir))
私の間違いを指摘してくれる人はいらっしゃいますか?
作業しながら、コードの関連ビット:
#import necessary
home_path = os.path.expanduser('~')
#block accepting input
pdfDir = home_path + '/Documents/' + input('Please input the folder name where the PDFs are stored. The folder must be directly under the Documents folder. It cannot have a space in it. \n \n Name of folder:')
def textExtractor():
#convert pdf to jpeg with a tesseract friendly resolution
with Img(filename=pdf_filename, resolution=300) as img: #need to think about using generic expanduser or other libraries to allow portability
#various lines of code to OCR and output .txt file
compilation_temp.close()
subject_files = os.listdir(pdfDir)
for pdf in subject_files:
#decode the whole file name as a string you can see
pdf_filename = os.fsdecode(pdf)
#check whether the string ends in /pdf
if pdf_filename.endswith(".pdf"):
textExtractor()
else:
#print for debugging
ここで解決策がマルチプロセッシングの場合はわかりません。私は 'textExtractor()'が何をしているのか、そして仕上げるのに時間がかかっているのは何であるのか分かりません。 – direprobs
'textExtractor'は処理するPDFをどのように知っていますか? 1つのpdfを1つのテキストファイルに変換しますか? – tdelaney
こんにちは。答える時間をとってくれてありがとう。必要に応じてコード全体を列挙することができますが、現在エラーを投げているものに焦点を当てる方が簡単だと考えています。 textExtractorはImg(ファイル名= pdf_filename、解像度= 300)を「img:」として開始します。「目的をより良く説明するために編集した質問があります。 – WillMason