真厉害!Java代码实现图片提取文字功能
Java资料站
共 5319字,需浏览 11分钟
· 2021-10-24
点击上方蓝色字体,选择“标星公众号”
优质文章,第一时间送达
摘要
一、tesseract-ocr介绍
二、安装tesseract
三、使用命令行
四、程序实现(Python)
# 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)
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;
}
}
六、实验测试
七、总结
作者 | 兴趣使然的程序猿
来源 | csdn.net/weixin_44671737/article/details/110000864
加锋哥微信: java3459 围观锋哥朋友圈,每天推送Java干货!
评论
美团还是快手,选个offer真纠结!
JavaGuide官方网站:javaguide.cn当面临多个还不错的 offer 时,做起选择是真心让人纠结,真心祝福各位都能有这种纠结的时候。纠结是正常的,毕竟选择一个 offer 的考虑因素太多了,并不仅仅是说谁给的钱多一点就跟谁干。如果真这么简单的话,那也就没啥可纠结的了。这篇文章我会结合一
JavaGuide
0
大量 Java 开源项目停更...
点击关注公众号,Java 干货及时推送↓推荐阅读:投了 100 多份简历后…出品 | OSC开源社区(ID:oschina2013)Sonatype 发布了最新的一份《软件供应链状况》报告,深入探讨了如何在充满选择的世界中定义更好的软件,并探讨人工智能 (AI) 对软件开发的深远
Java技术栈
0
用 Shader 实现旗帜飘扬动画效果
我觉得对于刚入门 3D 编程的朋友来说,如果能够完成代码创建模型数据->创建材质->编写Shader动画这一系列,想必会有满满的成就感。今天就用 Cocos Creator 的 utils.MeshUtils.createMesh 接口,带大家感受一下这个流程。这个流程不仅可以用于新手学
COCOS
2
OpenUI:输入一段文字就能生成网!页!!
今天给大家介绍一个开源的 AI 网页生成工具:OpenUI!!!前言 在软件开发领域,用户界面(UI)的设计和构建确实是一个至关重要的环节。传统的 UI 开发需要设计师和开发人员紧密合作,通过反复的设计、修改和测试来达到理想的效果,这个过程往往耗时且成本较高。随着 AI 技术的发展,现在有越来越多的
前端技术江湖
0
985学历真好用,一面答的再差也能过?
JavaGuide官方网站:javaguide.cn相对其他行业如律师、金融等,程序员求职面试对学历的包容度还是相对较高的,尤其是在过去几年。通常情况下,如果候选人在其他方面(如实习经历、项目经历、竞赛经历)表现突出,可以在一定程度上弥补学历的不足。不过,由于现在面试越来越卷,一些大厂、国企和研究所
JavaGuide
1
【送书福利】《Java面试八股文:高频面试题与求职攻略一本通》
先来唠唠最近粉丝面试回来跟我聊天,基本上都提到一个点,在面试过程中八股文占比很高(八股文70%、项目20%、10%算法)除了一些搞算法突出的厂除外。其实现在很多厂八股都是逐渐深入的方式来问,所以大家在学习的过程中,针对一些重点的内容,最好深入去学习,不然还是比较难应对这种追问式的问题。最近刚好从一位
Java后端技术
0
知乎高问:程序员有必要知道为什么做某个功能吗?
将Python客栈设为“星标⭐”第一时间收到最新资讯前言知乎上有一个提问:程序员有必要知道为什么做某个功能吗?↓↓↓今天,我们就这个话题一起来做个讨论。不知道程序员的你,在接到产品经理提的一个需求后,是习惯马上动手开始撸代码呢?还是会先暂停一下,认真思考一会如下一些问题,比如这个需求产生的背景是什么
Python客栈
0
会写代码的总理!全球第一“开源”名门望族
转自:OSC开源社区4 月 15 日,新加坡总理公署发表声明宣布,总理李显龙将于 5 月 15 日辞职,并正式交棒给副总理兼财政部长黄循财。对于李氏家族下一代是否会继续活跃在新加坡政坛,目前外界说法不一。但在开源圈里,李氏家族绝对有一席之地。李显龙有 4 名子女,其本人、次子,以及幼子都有非常专业的
开源前哨
0