如何解释通过表单(POST)而不是本地图像Python PIL上传的图像

时间:2019-04-02 17:38:35

标签: python flask python-imaging-library

我正在尝试解释图像,我的代码可用于解释本地保存的图像,但是我想解释通过POST上传到表单的图像,而无需实际将其存储在本地。有可能吗?

  1. 我尝试使用request.form['receipt-photo']receipt-photo是上传字段的名称)
text = image_to_string(Image.open(request.form['receipt-photo']))

但是我得到了FileNotFoundError: [Errno 2] No such file or directory: 'receipt3.jpg'

  1. 我也尝试过
text = image_to_string(request.form['receipt-photo'])

我遇到错误。

pytesseract.pytesseract.TesseractError: (1, 'Tesseract Open Source OCR Engine v4.0.0 with Leptonica Error, cannot read input file /Users/alexmarginean/Documents/Projects/Weeper/receipt3.jpg: No such file or directory Error during processing.')

  1. 然后我在网上搜索,发现了一些有关转换为字节的内容,但对我却不起作用
text = image_to_string(Image.open(BytesIO(request.form['receipt-photo'])))

我得到的错误:TypeError: a bytes-like object is required, not 'str'


这有效(但它使用本地存储的图像)

这是我的代码,它使用本地存储的图像

text = image_to_string(Image.open('receipt3.jpg'))

我希望我的照片仅通过发送POST请求就可以使用,而无需将其保存在本地。 如果有人可以帮助我,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

创建一个要用于存储上传文件的文件夹,我们将其命名为/uploads

在您的表单中创建一个上传字段和按钮

<form action="/upload" method="POST" enctype="multipart/form-data">
    <input type="file" name="receipt-photo">
    <input type="submit" value="Upload">
</form>

然后在Flask(假设您使用烧瓶)中添加一个端点

@app.route('/upload', methods=[POST])
    file = request.files['receipt-photo']
    f = os.path.join('/uploads', file.filename)

    file.save(f)

    # Manipulate image with PIL