Использование pytesseract с Django

я хочу сделать текстовую реконструкцию из изображения с помощью Django и Pytesseract

Я хочу, чтобы пользователь загрузил картинку из браузера и нажал на кнопку. чтобы выбранное изображение превратилось в текст.

я попробовал эту функцию в одном файле:

import pytesseract


pytesseract.pytesseract.tesseract.cmd = r"C:Program files\Tesseract-OCR\tesseract.exe"


def ocr_core(filename)
text = pytesseract.image_to_string(filename)
return text


#test the function on an image in images folder
print(ocr_core('images/test4.jpeg'))

это прекрасно работает в терминале.

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

pls я не знаю, хорошо ли мое объяснение... если да, pls мне нужна помощь

Добро пожаловать @ingIT.

Вы можете реализовать почти тот же код в представлении. Поскольку Django - это в первую очередь веб-фреймворк, вы, вероятно, захотите загрузить файл изображения, чтобы Django обработал его с помощью pytesseract и вывел текст на выходе.

Ваш html-файл должен будет представлять форму для загрузки файла, а затем отправляться в представление Django для проверки и обработки файла.

Я создал sample git repository, чтобы вы могли проверить пример приложения Django, если хотите. Он производит опыт, подобный следующему: enter image description here

Ниже показаны некоторые важные фрагменты кода:

forms.py почти прямо из docs

from django import forms


class UploadFileForm(forms.Form):
    """
    Simplest of forms to provide file upload
    """
    file_upload = forms.FileField()

views.py

import tempfile
from PIL import Image
from django.shortcuts import render
from pytesseract import pytesseract
from ocr_sample.forms import UploadFileForm


def ocr_index(request):
    context = dict()

    # Windows users need to add something like:
    # pytesseract.pytesseract.tesseract.cmd = "C:/Program Files/Tesseract-OCR/tesseract.exe"

    if request.method == "POST":
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():

            image = Image.open(request.FILES['file_upload'])
            image_text = pytesseract.image_to_string(image)

            # If you were handling larger files, perhaps something like this would be better
            # with tempfile.TemporaryFile() as temp_file:
            #     for chunk in request.FILES['file_upload'].chunks():
            #         temp_file.write(chunk)
            #     image = Image.open(temp_file)
            #     image_text = pytesseract.image_to_string(image)

            context.update({'image_text': image_text, })
            # reset the form: typically we'd redirect elsewhere to prevent multiple
            # submissions of data, but there is no database interaction here - only
            # sending the text back
            form = UploadFileForm()
    else:
        form = UploadFileForm()

    context.update({'form': form, })

    return render(request, "ocr_sample/ocr_index.html", context)
Вернуться на верх