有人可以在下面的代码中为我提供帮助,因为在本地系统中没有烧瓶但没有FLASK的情况下,它可以正常工作吗?

问题描述 投票:-1回答:1

代码在本地系统上运行良好,但是每当尝试将数据提交到Flask表单时,都会出现以下错误:

错误:不允许使用方法所请求的URL不允许使用该方法。

我的代码的相关部分如下:

pytesseract.pytesseract.tesseract_cmd = 'C:\\Users\\Abhi\\AppData\\Local\\Programs\\Python\\Python37-32\\Lib\\site-packages\\pytesseract\\Tesseract-OCR\\tesseract.exe'
#Poppler executable file is mandatory to load
PDFTOPPMPATH = r"C:\Users\Abhi\Downloads\poppler-0.68.0_x86\poppler-0.68.0\bin\pdftoppm.exe"
PDFFILE = "C:\\Users\\Abhi\\rep.pdf"
subprocess.Popen('"%s" -png "%s" out' % (PDFTOPPMPATH, PDFFILE))

app = Flask(__name__)

@app.route('/', methods=['POST'])
def predict():

    im = Image.open("out-2.png")
    rgb_im = im.convert('RGB')
    rgb_im.save('m.jpg')

    im = Image.open("m.jpg")
    text1 = pytesseract.image_to_string(im, lang = 'eng')

    with open("report.txt","w") as f:
        f.write(text1)


    para = ["Emissivity","Refl. temp.","Distance","Relative humidity","Atmospheric temperature","Transmission"]

    f=open('report.txt')
    lines=f.readlines()

    #lines.remove("\n")
    for i in range(0,len(lines)):
        if "jpg" in lines[i]:
            end1 = i-1
        if "MEASUREMENTS (°C)" in lines[i]:
            start1 = i+1
        if "Report" in lines[i]:
            end2 = i-1
        if "Transmission" in lines[i]:
            trans = i+1
        #print(str(start1) + " " + str(end1)+" " +str(trans) + " " + str(end2))

    for i in range(start1-1,trans):
        return str(lines[i])

if __name__ == '__main__':
    #p = int(os.getenv('PORT', 5000))
    #app.run(debug = True, port=p, host='0.0.0.0')
    #app.run()
    app.run(debug=True, use_reloader=False)
flask jupyter-notebook python-tesseract
1个回答
0
投票

[这里发生的事情是路由不接受任何url方法。它看起来像是您试图返回一个字符串。您必须将其转换为json。请使用Mashmellow来序列化您的输出。或使用下面的方法(使用json lib可以将列表秘密转换为json格式)

import json

def index():
    lines=[1,2,3,4,5]

    return json.dumps(lines[0])

使用上面的模板并根据您的需要对其进行自定义。希望获得帮助

© www.soinside.com 2019 - 2024. All rights reserved.