Попытка добавить распознавание текста в PDF, а затем загрузить в AWS с помощью Django

#python #django #amazon-s3 #django-rest-framework #ocr

Вопрос:

Я разрабатываю веб-приложение, чтобы я мог распознавать файлы во время работы, но не привязывать Adobe все время, пока она выполняет распознавание. Моя цель состоит в том, чтобы разрешить пользователю загружать PDF-файл без распознавания, распознавать его с помощью ocrmypdf инструмента, а затем отправлять полученный файл распознавания в корзину S3, где он загружается пользователем. Я проверил, что могу сохранить обычный PDF-файл в S3, но я зацикливаюсь на том, как на самом деле сохранить версию OCR в S3.

Вот мнение, которое я в настоящее время имею для выполнения распознавания:

 class CreatePost(generics.CreateAPIView):
    permission_classes = [IsAuthenticated]
    parser_classes = [MultiPartParser, FormParser]
    
    def post(self, request, *args, **kwargs):
        posts_serializer = FileSerializer(data=request.data)
        
        if posts_serializer.is_valid():
                     
            uploaded = posts_serializer.save()
            ocr_pdf = subprocess.call(['ocrmypdf', uploaded.file.path, 'output.pdf'])
            return Response(ocr_pdf, status=status.HTTP_201_CREATED)

        else:
            print('error', posts_serializer.errors)
            return Response(posts_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
        
        return uploaded
 

Я был бы очень признателен за любую помощь в этом. Спасибо!

Комментарии:

1. ибо S3 нет никакой разницы, сохраняете ли вы PDF, файл OCRed, изображение, аудио или любой другой файл. Ваша единственная проблема может заключаться в том, чтобы получить результат subprocess . Поэтому, возможно, сначала используйте print() файл журнала или файл журнала, чтобы увидеть, какая часть кода выполняется. Может быть, ваш подпроцесс никогда не закончится. ИЛИ, может быть, это вызовет какую-то ошибку, но вы не использовали try/except ее для ее получения.