Deci am un proiect personal despre care știu că este destul de ineficient, dar funcționează. Scriu un cod python care execută versiunea non pip a tesseract (apt instalat în linux). Codul meu funcționează pe Linux, dar primesc această eroare pe Windows:
FileNotFoundError: [WinError 2] Sistemul nu poate găsi fișierul
specificat: „DRIVE_LETTER:\PROJECT_FOLDER\FOLDER/FILE.txt”
Folosesc IDE-ul Atom, destul de nou în python, așa că dacă cineva îmi poate sublinia greșelile idioate, aș aprecia, mulțumesc! Eroarea apare pe subproces.run linie deoarece fișierul error.txt spune că nu poate găsi calea specifică.
Acesta este codul meu:
din flask import Flask,url_for,redirect,render_template,request,send_file
din werkzeug.utils import secure_filename
subproces de import
app=Flask(__nume__)
app.config['UPLOAD_DIRECTORY']="încărcări/"
app.config['FILE_NAME']=""
app.config['OUTPUT_DIRECTORY']="textresult/"
app.config['EXTENSION']=".txt"
@app.route("/",methods=["POST","GET"])
def to_upload():
err_msg=""
if request.method="POST":
dacă request.files['fileupload']:
f=request.files['fileupload']
nume_fișier=nume_fișier_securizat(f.nume fișier)
app.config['FILE_NAME']=nume fișier
f.save(app.config['UPLOAD_DIRECTORY']+nume fișier)
return redirect(url_for("process_upload",filename=filename))
altceva:
err_msg="Niciun fișier selectat!"
returnează șablon de randare("index.html",error=err_msg)
@app.route("/upload/<filename>",methods=["POST","GET"])
def process_upload(nume fișier):
f1=open("logs/out.txt","w")
f2=open("logs/error.txt","w")
out=subprocess.run([f"tesseract uploads/{filename}"+f" textresult/{filename}"],shell=True,stdout=f1,stderr=f2)
return redirect(url_for("fișier_ieșire"))
@app.route("/rezultat/",methods="GET"])
def fișier_ieșire():
return render_template("output.html")
@app.route("/descărcare/")
def download_file():
file=app.config['OUTPUT_DIRECTORY']+app.config['FILE_NAME']+app.config['EXTENSION']
return send_file(file,as_attachment=True)
dacă __name__=="__main__":
app.run(gazdă="0.0.0.0",port="2000",debug=True)
EDITAȚI | ×:
In sfarsit a pus treaba! Eliminat / în app.config['UPLOAD_DIRECTORY'] și app.config['OUTPUT_DIRECTORY'], deoarece acum folosesc os.path.join și acestea sunt următoarele linii atât pentru Linux, cât și pentru Windows, la care le-am făcut să lucreze:
Linux:
to_convert=os.path.join(app.config['UPLOAD_DIRECTORY'],nume fișier)
convert2txt=os.path.join(app.config['OUTPUT_DIRECTORY'],nume fișier)
out=subprocess.run(["tesseract %s %s"%(to_convert,convert2txt)],shell=True,stdout=f1,stderr=f2)
Windows:
to_convert=os.path.join(app.config['UPLOAD_DIRECTORY'],nume fișier)
convert2txt=os.path.join(app.config['OUTPUT_DIRECTORY'],nume fișier)
out=subprocess.run(["tesseract",to_convert,convert2txt],shell=True,stdout=f1,stderr=f2)
Vă mulțumim tuturor pentru contribuții!