当前位置: 首页 > news >正文

在线设计软件班级优化大师怎么下载

在线设计软件,班级优化大师怎么下载,银川app购物网站制作公司,z怎么做优惠券网站话不多说,向上效果图 1)先说框架版本 为什么要先说框架版本呢,因为我在各种版本中尝试了两天,总算确定了如下版本适合我,至于其他的版本,各位自己去尝试 python 3.9.7 EasyOCR 1.7.2 flask 3.0.3 2)执行操作效果图 2.1)多选文件 2.2)图片预览 2.3)提取选中文件 2.4)提取所有文…

话不多说,向上效果图

1)先说框架版本

为什么要先说框架版本呢,因为我在各种版本中尝试了两天,总算确定了如下版本适合我,至于其他的版本,各位自己去尝试

        python 3.9.7

        EasyOCR 1.7.2

        flask 3.0.3

2)执行操作效果图

        2.1)多选文件

2.2)图片预览

2.3)提取选中文件

2.4)提取所有文件

3.上代码

        3.1)前端代码index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Python OCR</title><link rel="stylesheet" href="/static/js/bootstrap/css/bootstrap.min.css"><style>.container {max-width: 1024px;margin-top: 20px;}.preview-image {max-width: 300px;max-height: 400px;margin-top: 10px;}.file-input {display: none;}</style>
</head>
<body><div class="container"><div class="row"><div class="col-md-12"><input type="file" id="fileInput" class="file-input" multiple></div></div><div class="row mt-3"><div class="col-md-6"><div class="list-group" id="picListBox"></div><button id="btnExtractSelected" class="btn btn-primary mt-2">提取选中文件</button><button id="btnDeleteSelected" class="btn btn-danger mt-2">删除选中文件</button></div><div class="col-md-6"><img id="lblImage" class="preview-image" src="" alt="暂未选择文件"></div></div><div class="row mt-3"><div class="col-md-12"><textarea id="txtPressInof" class="form-control" rows="5" readonly></textarea></div></div><div class="row mt-3"><div class="col-md-12 text-center"><button id="btnDo" class="btn btn-success">立即提取所有文件</button></div></div></div><script src="/static/js/jQuery-2.2.0.min.js"></script><script>$(document).ready(function () {// 处理文件选择$('#fileInput').change(function () {const files = $(this)[0].files;$('#picListBox').empty();for (let i = 0; i < files.length; i++) {const filename = files[i].name;const item = $('<a href="#" class="list-group-item list-group-item-action">' + filename + '</a>');item.data('file', files[i]);$('#picListBox').append(item);}});// 图片列表项点击事件$('#picListBox').on('click', 'a', function () {// 移除其他列表项的 active 类$('#picListBox a').removeClass('active');// 为当前点击的列表项添加 active 类$(this).addClass('active');const file = $(this).data('file');const reader = new FileReader();reader.onload = function (e) {$('#lblImage').attr('src', e.target.result);};reader.readAsDataURL(file);});// 删除选中文件按钮点击事件$('#btnDeleteSelected').click(function () {const selectedFileItem = $('#picListBox a.active');if (!selectedFileItem.length) {alert('请选择一个文件');return;}// 移除选中的文件项selectedFileItem.remove();// 清空 lblImage$('#lblImage').attr('src', '');$('#lblImage').attr('alt', '暂未选择文件');});// 提取选中文件按钮点击事件$('#btnExtractSelected').click(function () {const selectedFile = $('#picListBox a.active').data('file');if (!selectedFile) {alert('请选择一个文件');return;}const formData = new FormData();formData.append('file', selectedFile);$(this).prop('disabled', true).text('正在提取...');$.ajax({url: '/extract-selected', // 后端接口,处理选中的图片并返回提取结果type: 'POST',data: formData,contentType: false,processData: false,success: function (data) {$('#txtPressInof').val(data);$('#btnExtractSelected').prop('disabled', false).text('提取选中文件');}});});// 立即提取所有文件按钮点击事件$('#btnDo').click(function () {const formData = new FormData();$('#picListBox a').each(function () {formData.append('files', $(this).data('file'));});$(this).prop('disabled', true).text('正在提取...');$.ajax({url: '/process-pictures', // 后端接口,处理所有图片并返回提取结果type: 'POST',data: formData,contentType: false,processData: false,success: function (data) {$('#txtPressInof').val(data);$('#btnDo').prop('disabled', false).text('立即提取所有文件');}});});});</script>
</body>
</html>

        3.2)后端代码

from flask import Flask, request, jsonify, render_template
import os
import easyocr
import time
import re
app = Flask(__name__)@app.route('/')
def index():return render_template('index.html')def clean_filename(filename):"""清理文件名,移除非法字符"""return re.sub(r'[\\/*?:"<>|]', "", filename)def get_unique_filename(target_folder, filename):"""确保文件名唯一,避免覆盖同名文件"""base, ext = os.path.splitext(filename)unique_filename = filenamecounter = 1while os.path.exists(os.path.join(target_folder, unique_filename)):unique_filename = f"{base}_{int(time.time())}{ext}"  # 添加时间戳确保唯一性counter += 1return unique_filename@app.route('/process-pictures', methods=['POST'])
def process_pictures():# 指定保存图片的目标文件夹target_folder = "D:/OCR_Images"  # 请确保该文件夹存在或在代码中创建它if not os.path.exists(target_folder):os.makedirs(target_folder)files = request.files.getlist('files')reader = easyocr.Reader(['ch_sim', 'en'], model_storage_directory='./model')result = ""for i, file in enumerate(files):# 获取文件名(不包含路径)filename = os.path.basename(file.filename)#print(filename)# 清理文件名safe_filename = clean_filename(filename)#print(safe_filename)# 确保文件名唯一unique_filename = get_unique_filename(target_folder, filename)#print(unique_filename)file_path = os.path.join(target_folder, unique_filename)file.save(file_path)result += f'【开始处理{i + 1}-{len(files)}张图片,{unique_filename}】\n'#print(file_path,result)ocr_result = reader.readtext(file_path)restxt = ""for ln in ocr_result:restxt += ln[1]restxt += "\n"result += restxtresult += "全部完成"return jsonify(result)@app.route('/extract-selected', methods=['POST'])
def extract_selected():# 指定保存图片的目标文件夹target_folder = "D:/OCR_Images"  # 请确保该文件夹存在或在代码中创建它if not os.path.exists(target_folder):os.makedirs(target_folder)file = request.files['file']# 获取文件名(不包含路径)filename = os.path.basename(file.filename)# 清理文件名safe_filename = clean_filename(filename)# 确保文件名唯一unique_filename = get_unique_filename(target_folder, safe_filename)file_path = os.path.join(target_folder, unique_filename)file.save(file_path)reader = easyocr.Reader(['ch_sim', 'en'], model_storage_directory='./model')ocr_result = reader.readtext(file_path)result = f'【开始处理文件,{unique_filename}】\n'restxt = ""for ln in ocr_result:restxt += ln[1]restxt += "\n"result += restxtreturn jsonify(result)if __name__ == '__main__':app.run(debug=True)

最后提示:文字模型需自行下载保存到本地,我保存在自己的项目下的model目录下

模型的引用语句(有gpu的情况):

http://www.cadmedia.cn/news/7214.html

相关文章:

  • 网络科技公司logoseo的中文是什么
  • 对小米网站的建设意见模板建站的网站
  • 石家庄pc端网站建设seo优化要做什么
  • 建设网站的知识自己怎么做一个网页
  • 网站建设 源代码seo推广外包
  • 做平台推广怎么找客户优化百度百科
  • 自己做网站多少钱内蒙古seo
  • 网店推广的含义徐州百度seo排名优化
  • 建设企业网站企业网上银行登录官网流量推广怎么做
  • 武汉高端网站建设公司如何做线上销售和推广
  • 三方物流网站建设网推和地推的区别
  • 郑州网站建设冫汉狮网络武汉网站设计公司
  • 赣州网站开发百度网站链接提交
  • 丹阳网站建设效果软文是什么文章
  • 两个女孩子怎么做网站东莞营销网站建设直播
  • 河南宝盈建设工程有限公司网站北京建公司网站价格
  • 做网站还有意义24小时网站建设
  • 知乎推广渠道宁波免费seo在线优化
  • 网站建设包含什么怎么注册网址
  • 门户网站建设进展情况网站制作代码
  • 免费 网站 手机营销策划公司取名大全
  • 成都建设网站的公司新媒体运营
  • 建设学校网站的报告seo优化师就业前景
  • 中华建设网站职业技能培训中心
  • 北京企业网站模板建站开发站长工具查询入口
  • 闵行网站建设新网站怎么做优化
  • 浙江城乡建设部网站首页百度推广平台
  • 专业网站建设费用包括关键词挖掘ppt
  • 女装网站建设文献综述百度新闻发布
  • 邢台信息网123aso苹果关键词优化