加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

几行Java代码弄完图片 提取文字功能

发布时间:2022-11-24 12:52:48 所属栏目:编程 来源:
导读:  近日浏览网上一些图片提取文字的网站,觉得甚是有趣,花费半日也做了个在线图片识别程序,完成了两个技术方案的选择,一是 tesseract + Python flask的方案实现,二是 tesseract + Spring web 的技术解决方案,并
  近日浏览网上一些图片提取文字的网站,觉得甚是有趣,花费半日也做了个在线图片识别程序,完成了两个技术方案的选择,一是 tesseract + Python flask的方案实现,二是 tesseract + Spring web 的技术解决方案,并简作论述,与君共勉。
  
  一、tesseract-ocr介绍
  ocr 含义是Optical Character Recognition,含义即视觉字符识别。而tesseract是该领域特别优秀开源的作品。
  
  官方的tesseract定义:
  
  OCR engine - libtesseract and a command line program - tesseract.
  
  即tesseract包括一个视觉字符识别引擎libtesseract和命令行程序tesseract。
  
  当前最新稳定版本是4.x.x基于LSTM,源码可从找到tesseract的GitHub: tesseract.找到。
  
  
  
  关于tesseract的工作模式如上图所示。假设现在有一个图片输入,整个执行流程为:
  
   输入(一张图片)
   有用信息提取(比如一个图片上只有一个字,那其他留白的是无用,这个字上每个色素是有效的并且相关)
   找出文字/线条
   字符分类集
   输入与分类集对比找出最接近的
   输出识别结果
  二、安装tesseract
  第一步下载
  下载合适的exe安装文件:
  
  网址:https://digi.bib.uni-mannheim.de/tesseract/,下载完成后后装即可
  
  
  
  第二步环境变量配置
  在path变量中加入tesseract-ocr的安装路径
  
  
  
  第三步安装成功检测
  使用tesseract指令,显示如下:
  
  
  
  Linux环境下载安装与上述类似
  
  
  
  下载leptonica 和 tesseract两个包,解压安装,配置环境变量即可。网上很容易找到该安装包。
  
  三、使用命令行
  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)
 

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!