图片提取文字功能很神奇?Java 几行代码搞定它!

三、使用命令行


1.tesseract + 图片路径 + 保存结果名 + -l 语言集

示列: tesseract 1606150081.png 1606150081 -l chi_sim

2.tesseract + 图片路径 +stdout -l +语言集

示列: tesseract D:\company\ruigushop\spring-2s\test.png stdout -l chi_sim

有了上述之后就可以完成web图片识别程序的开发啦,废话不多说,直接上代码。

四、程序实现(Python)


程序设计思路:

上传图片 -> 保存 ->对上传的图片执行tesseract指令->获取识别结果

只有二十多行代码就实现了,so easy,以后网上看到图片识别程序再也不会感觉神奇了吧!

# coding=utf-8

from flask import Flask, request

import os

import datetime

import time

app = Flask(name)

def get_time_stamp():

times = datetime.datetime.now().strftime(‘%Y-%m-%d %H:%M:%S’)

array = time.strptime(times, “%Y-%m-%d %H:%M:%S”)

time_stamp = int(time.mktime(array))

return time_stamp

@app.route(‘/image/extract’, methods=[‘POST’])

def pure_rec():

file = request.files.get(‘file’)

ts = str(get_time_stamp())

up_path = os.path.join(ts + file.filename)

file.save(up_path)

cmd = “tesseract “+up_path+” " + ts + " -l chi_sim”

print(cmd)

os.system(cmd)

with open(ts+“.txt”, ‘r+’, encoding=“utf-8”) as f:

result = f.read()

return result

if name == ‘main’:

app.run(debug=True)

五、程序实现(Java)


不需要任何引入第三方jar包,搭建一个简单的springboot web项目就可以了,没有其他额外的依赖。

Controller:

package com.lbh.web.controller;

/*

* Copyright@lbhbinhao@163.com

* Author:liubinhao

* Date:2020/11/23

* ++++ ______ @author       liubinhao   ______             ______

* +++/     /|                         /     /|           /     /|

* +//  |                       //  |         /_____/  |

* |     |   |                      |     |   |        |     |   |

* |     |   |                      |     |   |________|     |   |

* |     |   |                      |     |  /         |     |   |

* |     |   |                      |     |/___________|     |   |

* |     |   |___________________   |     |____________|     |   |

* |     |  /                  / |  |     |   |        |     |   |

* |     |/ _________________/  /   |     |  /         |     |  /

* |_________________________|/b    ||/           ||/

*/

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.web.multipart.MultipartFile;

import java.io.BufferedReader;

import java.io.File;

import java.io.IOException;

import java.io.InputStreamReader;

@RestController

public class LiteralExtractController {

@PostMapping(“/image/extract”)

public String reg(@RequestParam(“file”)MultipartFile file) throws IOException {

String result = “”;

String filename = file.getOriginalFilename();

File save = new File(System.getProperty(“user.dir”)+“\”+filename);

if (!save.exists()){

save.createNewFile();

}

file.transferTo(save);

String cmd = String.format(“tesseract %s stdout -l %s”,System.getProperty(“user.dir”)+“\”+filename,“chi_sim”);

result = cmd(cmd);

return result;

}

public static String cmd(String cmd) {

BufferedReader br = null;

try {

Process p = Runtime.getRuntime().exec(cmd);

br = new BufferedReader(new InputStreamReader(p.getInputStream()));

String line = null;

StringBuilder sb = new StringBuilder();

while ((line = br.readLine()) != null) {

sb.append(line + “\n”);

}

return sb.toString();

} catch (Exception e) {

e.printStackTrace();

}

finally

{

if (br != null)

{

try {

br.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

return null;

}

}

哈哈哈,还有帅气的程序logo。学习资料:Java进阶视频资源

六、实验测试


很简单二十多行代码就完成了,看看效果怎么样吧。

测试一图片:

17f2d4300959b9878df9eb3d16edb887.png

测试一结果:

90642b1f376bee565b6cac195804fc44.png

测试二图片:

c28226db43bf944e761149dfb550284d.png

测试二结果:

4bbb6e71dfe8516ec3b36e0b6d1e96ba.png

perfect,识别的很准确,第二个测试全部是英文字符的时候我们采用了中文训练的数据集,虽然也很好的识别了,但是速度会慢很多。

七、总结

最后

在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例

MyBatis答案解析
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

大家看完有什么不懂的可以在下方留言讨论也可以关注。

觉得文章对你有帮助的话记得关注我点个赞支持一下!

ct,识别的很准确,第二个测试全部是英文字符的时候我们采用了中文训练的数据集,虽然也很好的识别了,但是速度会慢很多。

七、总结

最后

在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例
[外链图片转存中…(img-yanqHDA7-1714649347718)]

[外链图片转存中…(img-1YkVIuPv-1714649347719)]
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

大家看完有什么不懂的可以在下方留言讨论也可以关注。

觉得文章对你有帮助的话记得关注我点个赞支持一下!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值