我正在尝试将pytesseract用于我的Django应用程序。在views.py中,我调用pytesseract并将其找到的所有文本存储在'text_content'变量中。我想将此变量另存为模型的'text'参数,但不确定如何执行此操作。
我尝试使用.save(),但出现此错误:
'str'对象没有属性'save'
这是views.py
def image_view(request):
if request.method == 'POST':
form = partForm(request.POST, request.FILES)
if form.is_valid():
form.save()
data = request.POST.copy()
image_file = request.FILES.get('image')
text_content = pytesseract.image_to_string(Image.open(image_file))
text_content.save()
return redirect('success')
else:
form = partForm()
return render(request, 'add_image.html', {'form' : form})
这里是models.py
class Component(models.Model):
snum = models.CharField(max_length=20, default = '')
image = models.ImageField(blank=True)
text = models.TextField(default = 'no text found')
这是forms.py
class partForm(forms.ModelForm):
snum = forms.CharField(max_length=128, help_text="please enter the
number.")
class Meta:
model = Component
fields = ['snum', 'image']
答案 0 :(得分:0)
由于此行而发生错误。 text_content.save()
您正在尝试在字符串对象上调用保存功能。
现在要解决您的问题,有两种方法可以解决。一种是处理请求数据并将其发送到表单,另一种是在模型的save方法中进行。
方法1:在当前视图中
if form.is_valid():
data = request.POST.copy()
image_file = request.FILES.get('image')
text_content = pytesseract.image_to_string(Image.open(image_file))
data['relevant_field_name'] = text_content
new_form = partForm(data)
if new_form.is_valid():
new_form.save()
return redirect('success')
方法2:在models.py中,将其添加到Component
def save(self, *args, **kwargs):
if getattr(self, 'image'):
image_file = self.image
self.relevant_field_name = pytesseract.image_to_string(Image.open(image_file))
super(Component, self).save(*args, **kwargs)