• 基于SpringBoot的OCR识别服务端方案


    根据浩然同学写的方案进行整理。

    1 需求分析

    本系统主要满足以下功能:

    1. 客户需要注册账号,并需要账号验证才能进行其他服务(这个功能需要和David讨论后确定);
    2. 客户向服务器上传图片,通过OCR识别模型获得图片的文字内容;
    3. 客户查看识别的历史记录,需要将图片内容持久化;
    4. 系统需要一定的并发能力。

    2 总体设计

    原有方案:
    在这里插入图片描述
    更新后的方案:
    在这里插入图片描述

    本系统基于java语言的开源web客户端开发框架SpringBoot进行开发。客户在客户端上传图片后,经过nginx网关将数据反向代理到SpringBoot服务器上,并在服务器上执行具体的业务。服务的运行流程如下:

    2.1 业务流程

    首先,为防止大量用户同时使用导致服务器崩溃,用户上传的图片和数据会首先保存在消息队列中,后端服务会以安全的速度通过FIFO的形式读取并执行任务。
    然后,通过java-OpenCV,腾讯数据万象等图片处理框架,对图片进行预处理。为减轻服务器压力,将图片和预处理后的图片上载到提供OSS(对象存储)服务的云平台进行存储,服务端仅保存链接和临时文件。
    获得临时文件后,首先将文件处理成模型接口要求的格式,然后通过Jpython调用部署在服务端的模型或直接将模型部署在弹性运算平台上进行模型计算,得到模型结果。模型结果通过处理后获得文字返回前端页面。同时,可以直接通过java2word等框架操作word文档来生成排版后的word文档。

    2.2 数据持久化和缓存

    服务端程序通过Redis提供缓存支持,保证查询,用户交互等操作高速进行。Mybatis持久层框架进行数据存储。使用MySQL作为数据库,通过主从数据库模式实现读写分离。Redis和MySQL保持数据同步。日志存储使用SpringBoot支持的日志框架,保存日志文件以便于故障排查和程序调试。为保持可用性,可以使用MySQL集群或Redis集群,也可以考虑使用云数据库服务。

    2.3 安全性和权限

    服务端和前端的传输使用JWT框架进行加密,通过md5加密json数据并生成token保证请求的合法性。前后端使用AES等加密方案保证数据的安全性。
    服务器安全框架采用shiro框架集成JWT完成用户登录,用户权限验证和对后端数据接口的鉴权处理,防止用户越权访问开发接口等情况出现。用户登录可以支持手机验证码登录,账号密码登录等成熟方案。
    用户敏感数据加密部分采用shiro实现,使用业界常用的随机盐MD5加密算法,保证客户个人敏感信息/识别文本信息的安全性。

    2.4 扩展

    以上为一个单体springboot项目,但是具有很强的扩展性,由于微服务框架和技术的发展,在此项目基础上如果有其他功能和业务,可以不断集成这些业务形成分布式的微服务后端系统。

  • 相关阅读:
    frp隧道(流量代理)
    内存映射的注意事项
    Ubuntu上阅读Android源码工具
    自己使用过的Python(Win64位)各版本及相关工具百度网盘下载链接汇总
    调试分析Linux 0.00引导程序
    编码自动化:使用MybatisX初体验,太爽了!
    教程三 在Go中使用Energy创建跨平台应用 - 状态控制
    Django之视图层
    pandas教程:Periods and Period Arithmetic 周期和周期运算
    【C++】类和对象——下
  • 原文地址:https://blog.csdn.net/search_129_hr/article/details/127348230