百度OCR识别后,使⽤正则表达式处理识别的字符,截取匹配的字符最近有个业务,识别跑步类软件的图⽚上的⽂字,如下图:
调⽤百度⾼精度OCR接⼝,识别出来的字符是这样的:
中国移动令 VOLTE
09:48
<
10.04公
※04⽉29⽇05:46
慢0619
0513快
054300:57:28638.1
11187时间正则表达式java
194
89
(步)
(步分钟)
(厘⽶
此时就需要使⽤正则表达式进⾏字符的筛选,只到需要的耗时,完成时间,⾥程数。使⽤Java正则表达式的代如下:
List<String> ocrList=new ArrayList<>();
ocrList.add("1212:00:0012312");
ocrList.add("12.0");
ocrList.add("122.02");
ocrList.add("122.02.2323");
ocrList.add("12⽉03⽇12:00");
ocrList.add("****12⽉03⽇12:00");
ocrList.add("****12⽉03⽇12:008823");
//选择完成时间
String score=ocrList.parallelStream().map(s->{
Pattern pattern = Patternpile("\\d{1,2}:\\d{1,2}:\\d{1,2}");
Matcher matcher = pattern.matcher(s);
if(matcher.find())
up(0);
return"";
}).filter(s2->s2.matches("\\d{1,2}:\\d{1,2}:\\d{1,2}")).findFirst().orElse("");
log.info(score);
/
/过滤第⼀个出现的⾥程,如:10.65
String miles=ocrList.parallelStream().map(s1->{
Pattern pattern = Patternpile("\\d{1,2}\\.\\d{1,2}");
Matcher matcher = pattern.matcher(s1);
if(matcher.find())
up(0);
return"";
}).filter(s2->s2.matches("\\d{1,2}\\.\\d{1,2}")).findFirst().orElse("");
//过滤打卡⽇期
String completionTimeStr=ocrList.parallelStream().map(s->{
Pattern pattern = Patternpile("\\d{1,2}-\\d{1,2} \\d{1,2}:\\d{1,2}");
Matcher matcher = pattern.place("⽉","-").replace("⽇"," "));
if(matcher.find())
up(0);
return"";
}).filter(s2->s2.matches("\\d{1,2}-\\d{1,2} \\d{1,2}:\\d{1,2}")).findFirst().orElse("");
log.info(score+"====="+miles+"===="+completionTimeStr);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论