三、使用命令行
1.tesseract + 图片路径 + 保存结果名 + -l 语言集
2.tesseract + 图片路径 +stdout -l +语言集
有了上述之后就可以完成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;
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;
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 + “ ”);
return sb.toString();
finally
if (br != null)
br.close();
return null;
哈哈哈,还有帅气的程序logo。学习资料:Java进阶视频资源
六、实验测试
很简单二十多行代码就完成了,看看效果怎么样吧。
测试一图片:
测试一结果:
测试二图片:
测试二结果:
perfect,识别的很准确,第二个测试全部是英文字符的时候我们采用了中文训练的数据集,虽然也很好的识别了,但是速度会慢很多。
在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
觉得文章对你有帮助的话记得关注我点个赞支持一下!
ct,识别的很准确,第二个测试全部是英文字符的时候我们采用了中文训练的数据集,虽然也很好的识别了,但是速度会慢很多。
在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例
[外链图片转存中…(img-yanqHDA7-1714649347718)]
[外链图片转存中…(img-1YkVIuPv-1714649347719)]
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!