python实现的ocr接口
2024-10-07 06:08:56
太累了,,有时间再补解释
import pytesseract
import requests
from PIL import Image
from PIL import ImageFilter
from StringIO import StringIO
from werkzeug.utils import secure_filename
from gevent import monkey
from gevent.pywsgi import WSGIServer
monkey.patch_all()
from flask import Flask,render_template,jsonify,request,send_from_directory
import time
import os
import base64
import random app = Flask(__name__)
UPLOAD_FOLDER='upload'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
basedir = os.path.abspath(os.path.dirname(__file__))
ALLOWED_EXTENSIONS = set(['png','jpg','JPG','PNG']) def allowed_file(filename):
return '.' in filename and filename.rsplit('.',)[] in ALLOWED_EXTENSIONS @app.route('/',methods=['GET'],strict_slashes=False)
def indexpage():
return render_template('index.html') @app.route('/',methods=['POST'],strict_slashes=False)
def api_upload():
log = open("error.log","w+")
file_dir = os.path.join(basedir, app.config['UPLOAD_FOLDER'])
if not os.path.exists(file_dir):
os.makedirs(file_dir)
print request.headers
print >> log, request.headers
f = request.files['file']
postLang = request.form.get("lang", type=str) log.close() if f and allowed_file(f.filename):
fname = secure_filename(f.filename)
ext = fname.rsplit('.',)[]
unix_time = int(time.time())
new_filename = str( random.randrange(, , ))+str(unix_time)+'.'+ext
f.save(os.path.join(file_dir,new_filename))
if cmp(postLang, "chi_sim"):
strboxs = pytesseract.image_to_boxes(Image.open("/var/OCRhtml/upload/" + new_filename), lang="chi_sim")
strdata = pytesseract.image_to_string(Image.open("/var/OCRhtml/upload/" + new_filename), lang="chi_sim")
print "Chinese"
else:
strboxs = pytesseract.image_to_boxes(Image.open("/var/OCRhtml/upload/"+new_filename))
strdata = pytesseract.image_to_string(Image.open("/var/OCRhtml/upload/"+new_filename))
return jsonify({"errno":, "msg":"succeed ","data":strdata,"info":strboxs})
else:
return jsonify({"errno":, "errmsg":u"failed"}) if __name__ == '__main__':
http_server = WSGIServer(('', ), app)
http_server.serve_forever()
最新文章
- php登录注册页面及加载
- 阿里云centos安装svn和submin
- AX2012自定义注释脚本开发
- 【BZOJ1060】[ZJOI2007]时态同步 树形DP
- .NET中的流
- 关于resolve非泛型方法不能与类型实参一起使用
- 将 node.js 的数据保存到 mongo 数据库中
- 对QT的理解——能在公司里不做Java,不做很偏门的产品,不使用偏门的语言,还有钱挣,要有感恩的心
- JQuery之append和appendTo的区别,还有js中的appendChild用法
- ServletContext2
- synchronize学习
- 每天一个小算法(5)----找到链表倒数第K个结点
- MVC中如何实现本地化的解决方案
- (转载)html dom节点操作(获取/修改/添加或删除)
- Dynamics 365 Online-使用Azure Logic App 与 Dynamics 365 集成
- C语言中#undef作用
- MySQL的自动提交模式
- Libvmi实现分析
- MT【223】二次函数最大最小
- Unity调用Window提示框Yes/No(英文提示窗)