启动项目的前提(新手去公司必备的技能):git clone克隆项目,指定分支 更换项目的maven位置 改application.yml配置文件为自己的部分
接口:/ocr/general 常规识别 【将文件中的文本内容提取成json格式】
传入参数:
blankDetection 空白页检测,如果开启则对应的有一个blankIndex字段,值为空白页的索引,从0开始
langType 语言类型,中文
需要识别的文件(目标文件)
流程:
-
前端发送请求,首先根据请求参数封装map类型的参数集合。
-
判断传入的文件对象和fileBase64(文件Base64数据)是否为空,这是是对文件的非空判断。
-
将该识别任务存储为一个task对象,并返回一个task id。
-
将该文件对象拷贝到指定的src路径下
-
将 task id 发送到 active MQ中,指定destination,等待MQ接收这个id,然后直接返回处理成功的响应结果。
-
MQ监听指定destination的消息,如果存在则取出消息,找到对应的task,然后处理该task。
-
首先更新task状态为处理中,然后通过指定的构造参数获取到源路径对象以及目标路径对象。
-
执行核心任务:将目标文件中的文本内容提取出来,将其转成一个json格式。
-
首先尝试获取目标文件的格式,这里调用的是TypeProbe中的type方法,从HTTP头部中获取文件类型。
-
然后如果请求头中有参数的话,需要封装一下参数,然后调用由c++编写的执行引擎将目标文件中的内容解析成json对象。
-
将json对象存入指定的文件中。
-
-
更新task状态为成功,并异步返回处理结果,然后调用query接口查询识别后的文本内容即可。
/ocr/arrurate 精确识别,也是转成txt文本,除了常规识别出的内容之外,还有每行内容的边界,并且会列出每个字符的边界信息。
修复语义识别的bug:原先解析出来的json数据有blankIndex字段(空白页)的值以及解析出的内容,但是实际存放到文件中的是解析出来的内容,返回list类型。
解决办法:首先判断blankIndex字段是否有值(空白页),如果有则将blankIndex和pages(识别出的内容)对应的key和value存放到map中,然后然后map类型。
后续读取的话,取出json对象,先判断是否是map类型,如果是,则将对应的key和value取出来存放到结果中返回,否则是list存放到结果中返回。