我正在创建一个Django应用程序,它将图像转换为文本。在将upload_to=
添加到模型中之前,脚本可以正常工作。
看看我的model.py
from django.db import models
import os
import uuid
from django.conf import settings
def img_path(_, file_name):
return os.path.join(settings.MEDIA_ROOT, str(uuid.uuid4()), file_name)
class ImageForExtractText(models.Model):
image = models.FileField(upload_to=img_path)
当访客上传图像时,它将创建一个新目录并将图像放置在该目录中。即使同一位访客上传了另一个图像,它也会创建另一个新目录并将该图像放置在该目录中–这很好,这没问题。
我的OCR脚本存在问题,该脚本找不到图像目录,因为它始终使用uuid创建一个新的目录名称。
看看下面的img2text.py
import os
import pytesseract
from PIL import Image
def extract_text_from_img():
basepath = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
basepath = basepath[:-5] + '/media/'
img_path_list = os.listdir(basepath)
for path in img_path_list:
path = basepath + path
img = Image.open(path)
text = pytesseract.image_to_string(img)
yield text
此脚本找不到目录名称。
它应该始终识别唯一的访客上传的图像目录。
看看我下面的view.py
from django.shortcuts import render, redirect
from .img2text import extract_text_from_img
from .forms import UploadImage
def buttion(request):
return render(request, 'home.html')
def output(request):
data = extract_text_from_img()
data = list(data)
data = data
return render(request, 'home.html', {'data': data})
def upload(request):
form = UploadImage(request.POST or None, request.FILES or None)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
return render(request, 'home.html', {'form': form})
我的意思是,当访客上传图像时,它会创建一个新目录并将图像放置在其中,当同一访客单击按钮以获取文本时,脚本将执行,但问题是,脚本无法执行找到新创建的目录,您可以在img2text.py
变量中再次检查basepath
,我需要脚本应仅将与访问者上载的目录相同的目录名获取。因为新用户请求时,它总是创建一个新目录。
希望您能解决这个问题,如果没有,请随时就此问题向我询问