Использование 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, если хотите. Он производит опыт, подобный следующему:

Ниже показаны некоторые важные фрагменты кода:
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)