Django Visitor使用uuid上传目录,并将ID发送到自定义脚本

时间:2019-03-24 10:25:03

标签: django

我正在创建一个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,我需要脚本应仅将与访问者上载的目录相同的目录名获取。因为新用户请求时,它总是创建一个新目录。

希望您能解决这个问题,如果没有,请随时就此问题向我询问

0 个答案:

没有答案