文件识别文字的大体流程

启动项目的前提(新手去公司必备的技能):git clone克隆项目,指定分支 更换项目的maven位置 改application.yml配置文件为自己的部分

接口:/ocr/general 常规识别     【将文件中的文本内容提取成json格式】

传入参数:

blankDetection 空白页检测,如果开启则对应的有一个blankIndex字段,值为空白页的索引,从0开始

langType 语言类型,中文

需要识别的文件(目标文件)

流程:

  1. 前端发送请求,首先根据请求参数封装map类型的参数集合。

  2. 判断传入的文件对象和fileBase64(文件Base64数据)是否为空,这是是对文件的非空判断。

  3. 将该识别任务存储为一个task对象,并返回一个task id。

  4. 将该文件对象拷贝到指定的src路径下

  5. 将 task id 发送到 active MQ中,指定destination,等待MQ接收这个id,然后直接返回处理成功的响应结果。

  6. MQ监听指定destination的消息,如果存在则取出消息,找到对应的task,然后处理该task。

  7. 首先更新task状态为处理中,然后通过指定的构造参数获取到源路径对象以及目标路径对象。

  8. 执行核心任务:将目标文件中的文本内容提取出来,将其转成一个json格式。

    • 首先尝试获取目标文件的格式,这里调用的是TypeProbe中的type方法,从HTTP头部中获取文件类型。

    • 然后如果请求头中有参数的话,需要封装一下参数,然后调用由c++编写的执行引擎将目标文件中的内容解析成json对象。

    • 将json对象存入指定的文件中。

  9. 更新task状态为成功,并异步返回处理结果,然后调用query接口查询识别后的文本内容即可。

/ocr/arrurate 精确识别,也是转成txt文本,除了常规识别出的内容之外,还有每行内容的边界,并且会列出每个字符的边界信息。

修复语义识别的bug:原先解析出来的json数据有blankIndex字段(空白页)的值以及解析出的内容,但是实际存放到文件中的是解析出来的内容,返回list类型。

解决办法:首先判断blankIndex字段是否有值(空白页),如果有则将blankIndex和pages(识别出的内容)对应的key和value存放到map中,然后然后map类型。

后续读取的话,取出json对象,先判断是否是map类型,如果是,则将对应的key和value取出来存放到结果中返回,否则是list存放到结果中返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值