Я создаю образ докера для моего проекта приложения с флягой Python и развертываю его на AWS.Одна из моих программ использует concurrent.futures для включения некоторых многопроцессорных функций.Но я понял, что AWS игнорирует весь блок concurrent.futures, и это приводит к ошибке.
pdf_to_img_to_text.py.Эта программа вызывается какой-то другой программой.Он отлично работает на моей локальной машине.Но в моем экземпляре AWS он полностью игнорирует блок with with concurrent.futures.ProcessPoolExecutor(max_workers=10) as executor:
и, поскольку ничего не получает в файле dict_map, в результате получается KeyError
.Пожалуйста, объясните, почему блок с concurrent.futures игнорируется в AWS.
from PyPDF2 import PdfFileReader
import os
import pytesseract
from pytesseract import image_to_string
import PIL.Image
from PIL import Image
from wand.image import Image as Img
import os
import glob
import concurrent.futures
import time
def no_of_pages(file):
pdf = PdfFileReader(open(file,'rb'))
pages = pdf.getNumPages()
return pages
def ocr(file):
print("Converting PDF to Image to Text....")
print(file)
text = ' '
im = PIL.Image.open(os.path.join(file))
text = text + image_to_string(im)
try:
os.remove(file)
except:pass
return text
os.environ['OMP_THREAD_LIMIT'] = '1'
def convert_pdf_to_image_to_txt():
dict_map = {}
path = "something"
file = "something"
f = "something"
with Img(filename=file, resolution=300) as img:
img.compression_quality = 99
img.save(filename = os.path.join('C://Users//aswathi.nambiar//Desktop//Output_Images',f + '.jpg'))
with concurrent.futures.ProcessPoolExecutor(max_workers=10) as executor:
image_list = glob.glob(path+"\\*.jpg")
i = 0
for img_path,text in zip(image_list,executor.map(ocr,image_list)):
print(img_path.split("\\")[-1],',',', processed')
dict_map[img_path.split("\\")[-1]] = text
print(dict_map)
pages = no_of_pages(file)
text = ' '
for i in range(0,pages):
print(f+'-'+str(i)+'.jpg')
print(dict_map[f+'-'+str(i)+'.jpg'])
text = text + dict_map[f+'-'+str(i)+'.jpg']
return text