Сбой приложения Django после того, как pytesseract считывает автогенерированное изображение из pdf

Когда пользователь загружает файлы в мою систему, я запускаю новый поток, который сканирует их, чтобы найти определенный шаблон, в то время как представление, которое обрабатывает загрузку, возвращается и приложение перенаправляется на главную страницу.

thread = threading.Thread(target=fucn1, args=(arg1,))  
thread.start()

В func1(), если файл является PDF, я разделяю его на страницы, а затем сохраняю и анализирую каждую из них, как показано ниже:

def func1(uuid):
    documents = Document.objects.filter(model_uuid=uuid)
    result = set()
    for document in documents:
        if extension == 'pdf':
            pages = convert_from_path(filepath,500)
            for i in range(len(pages)):
                page = pages[i]
                img_filepath = local_directory + 'page_' + str(i) + '.jpg'
                page.save(img_filepath, 'JPEG')
                values = analize(img_filepath)
                result = set.union(result, values)
        else:
            values = analize(filepath)
            result = set.union(result, values)


def analize(filepath):
    pattern = "xxxxxxxxxxxx"
    # Load image
    img = cv2.imread(filepath)
    # Extract text from image
    sret = pytesseract.image_to_string(img)
    return re.findall(pattern, sret)

Если входной файл уже является изображением (png, jpg, jpeg), деление на страницы опускается, и все работает хорошо. Однако, если файл является PDF, система терпит крах здесь:

sret = pytesseract.image_to_string(img)

Это наводит меня на мысль, что проблема связана с pdf2image или poppler-utils. Однако, эта функция также успешно выполняется, когда входным файлом является изображение.

Apache2 error.log выводит следующее:

От процесса-демона 'process_name' получены усеченные или чрезмерно большие заголовки ответа: /home/ubuntu/proejctname/appname/appname/wsgi.py, referer: https://xxxxxxxx.es/yyyyyyy/

Импорт:

from pdf2image import convert_from_path
import boto3
import cv2
import os
import pytesseract
import re
import sys
import numpy as np

Дополнительная информация:

  • Ubuntu 18.04.4 LTS
  • Django 3.6.9
  • Apache/2.4.29

Спасибо!

Вернуться на верх