from django.shortcuts import render from rest_framework.views import APIView from rest_framework.parsers import MultiPartParser from rest_framework.response import Response from rest_framework import status import easyocr import cv2 import pytesseract from pytesseract import Output import json def UploaderView(request): return render(request, 'sumasen_easyocr/index.html') class FileUploadView(APIView): parser_classes = [MultiPartParser,] def post(self, request, format='jpg'): ocr = request.POST.get("engine", None) up_file = request.FILES['file'] #destination = open('/Users/mohamednouffer/workspace/akira_san/sumasen_ocr/sumasen_easyocr/uploaded' + up_file.name, 'wb+') destination = open('/home/sumasen/django_easyocr_api/orc_api/sumasen_easyocr/uploaded' + up_file.name, 'wb+') for chunk in up_file.chunks(): destination.write(chunk) destination.close() if ocr == 'EasyOCR': try: reader = easyocr.Reader(['ja','en']) result = reader.readtext('/home/sumasen/django_easyocr_api/orc_api/sumasen_easyocr/uploaded' + up_file.name) #result = reader.readtext('/Users/mohamednouffer/workspace/akira_san/sumasen_ocr/sumasen_easyocr/uploaded' + up_file.name) #print('@@@@@@@@@@') #print(result) #print('@@@@@@@@@@') return Response(result, status.HTTP_201_CREATED) #return Response({''}, status.HTTP_201_CREATED) except Exception as e: print(e) return Response({'Error': "Error occured"}, status.HTTP_400_BAD_REQUEST) else: try: img = cv2.imread('/home/sumasen/django_easyocr_api/orc_api/sumasen_easyocr/uploaded' + up_file.name) #img = cv2.imread('/Users/mohamednouffer/workspace/akira_san/sumasen_ocr/sumasen_easyocr/uploaded' + up_file.name) custom_config = r'--oem 3 --psm 6' d = pytesseract.image_to_data(img, lang='jpn', config=custom_config, output_type=Output.DICT) n_boxes = len(d['level']) output = [] #print(d['level']) for i in range(n_boxes): (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) reg = dict({ "text": d['text'][i], "left": d['left'][i], "top": d['top'][i], "width": d['width'][i], "height": d['height'][i], "conf": d['conf'][i] }) output.append(reg) app_json = json.dumps(output) return Response(app_json, status.HTTP_201_CREATED) except Exception as e: print(e) return Response({'Error': "Error occured"}, status.HTTP_400_BAD_REQUEST)