激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Windows下Java調(diào)用OCR進(jìn)行圖片識(shí)別

Windows下Java調(diào)用OCR進(jìn)行圖片識(shí)別

2021-06-22 12:59coco_ethan Java教程

這篇文章主要為大家詳細(xì)介紹了Windows下Java調(diào)用OCR進(jìn)行圖片識(shí)別,通過Tesseract-OCR對(duì)圖片進(jìn)行識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

使用java語(yǔ)言,通過tesseract-ocr對(duì)圖片進(jìn)行識(shí)別。

1.tesseract-ocr

下載windows版本并安裝。

2.程序如下:

a.imageiohelper類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package ocr;
 
import java.awt.image.bufferedimage;
import java.io.file;
import java.io.ioexception;
import java.util.iterator;
import java.util.locale;
 
import javax.imageio.iioimage;
import javax.imageio.imageio;
import javax.imageio.imagereader;
import javax.imageio.imagewriteparam;
import javax.imageio.imagewriter;
import javax.imageio.metadata.iiometadata;
import javax.imageio.stream.imageinputstream;
import javax.imageio.stream.imageoutputstream;
 
import com.sun.media.imageio.plugins.tiff.tiffimagewriteparam;
 
public class imageiohelper {
 /**
 * 圖片文件轉(zhuǎn)換為tif格式
 * @param imagefile 文件路徑
 * @param imageformat 文件擴(kuò)展名
 * @return
 */
 public static file createimage(file imagefile, string imageformat) {
 file tempfile = null;
 try {
  iterator<imagereader> readers = imageio.getimagereadersbyformatname(imageformat);
  imagereader reader = readers.next();
 
  imageinputstream iis = imageio.createimageinputstream(imagefile);
  reader.setinput(iis);
  //read the stream metadata
  iiometadata streammetadata = reader.getstreammetadata();
  
  //set up the writeparam
  tiffimagewriteparam tiffwriteparam = new tiffimagewriteparam(locale.chinese);
  tiffwriteparam.setcompressionmode(imagewriteparam.mode_disabled);
  
  //get tif writer and set output to file
  iterator<imagewriter> writers = imageio.getimagewritersbyformatname("tiff");
  imagewriter writer = writers.next();
  
  bufferedimage bi = reader.read(0);
  iioimage image = new iioimage(bi,null,reader.getimagemetadata(0));
  tempfile = tempimagefile(imagefile);
  imageoutputstream ios = imageio.createimageoutputstream(tempfile);
  writer.setoutput(ios);
  writer.write(streammetadata, image, tiffwriteparam);
  ios.close();
  
  writer.dispose();
  reader.dispose();
  
 } catch (ioexception e) {
  e.printstacktrace();
 }
 return tempfile;
 }
 
 private static file tempimagefile(file imagefile) {
 string path = imagefile.getpath();
 stringbuffer strb = new stringbuffer(path);
 strb.insert(path.lastindexof('.'),0);
 return new file(strb.tostring().replacefirst("(?<=//.)(//w+)$", "tif"));
 }
 
}

b.ocr核心類

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package ocr;
 
import java.io.bufferedreader;
import java.io.file;
import java.io.fileinputstream;
import java.io.inputstreamreader;
import java.util.arraylist;
import java.util.list;
 
import org.jdesktop.swingx.util.os;
 
public class ocr {
 private final string lang_option = "-l"; //英文字母小寫l,并非數(shù)字1
 private final string eol = system.getproperty("line.separator");
 private string tesspath = "c://program files//tesseract-ocr";
 //private string tesspath = new file("tesseract").getabsolutepath();
 
 public string recognizetext(file imagefile,string imageformat)throws exception{
 file tempimage = imageiohelper.createimage(imagefile,imageformat);
 file outputfile = new file(imagefile.getparentfile(),"output");
 stringbuffer strb = new stringbuffer();
 list<string> cmd = new arraylist<string>();
 if(os.iswindowsxp()){
  cmd.add(tesspath+"//tesseract");
 }else if(os.islinux()){
  cmd.add("tesseract");
 }else{
  cmd.add(tesspath+"//tesseract");
 }
 cmd.add("");
 cmd.add(outputfile.getname());
 //cmd.add(lang_option);
 //cmd.add("chi_sim");
 //cmd.add("eng");
 
 processbuilder pb = new processbuilder();
 pb.directory(imagefile.getparentfile());
 
 cmd.set(1, tempimage.getname());
 pb.command(cmd);
 pb.redirecterrorstream(true);
 
 process process = pb.start();
 //tesseract.exe 1.jpg 1 -l chi_sim
 int w = process.waitfor();
 
 //刪除臨時(shí)正在工作文件
 tempimage.delete();
 
 if(w==0){
  bufferedreader in = new bufferedreader(new inputstreamreader(new fileinputstream(outputfile.getabsolutepath()+".txt"),"utf-8"));
  
  string str;
  while((str = in.readline())!=null){
  strb.append(str).append(eol);
  }
  in.close();
 }else{
  string msg;
  switch(w){
  case 1:
   msg = "errors accessing files.there may be spaces in your image's filename.";
   break;
  case 29:
   msg = "cannot recongnize the image or its selected region.";
   break;
  case 31:
   msg = "unsupported image format.";
   break;
  default:
   msg = "errors occurred.";
  }
  tempimage.delete();
  //throw new runtimeexception(msg);
 }
 new file(outputfile.getabsolutepath()+".txt").delete();
 return strb.tostring();
 }
}

c.main

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package ocr;
import java.io.file;
import java.io.ioexception;
 
public class testocr {
 
 /**
 * @param args
 */
 public static void main(string[] args) {
 //輸入圖片地址
 string path = "d://test//test.bmp"
    try
      string valcode = new ocr().recognizetext(new file(path), "bmp"); 
      system.out.println(valcode); 
    } catch (ioexception e) { 
      e.printstacktrace(); 
    } catch (exception e) {
  e.printstacktrace();
 
 }
 
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/gaokao2011/article/details/23421477

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 成人不卡在线观看 | 日韩黄色成人 | 少妇一级淫片免费放播放 | 久久精品欧美电影 | 亚洲欧美日韩精品久久 | 一级毛片在线视频 | 久久久久久久久久久久久国产精品 | 第一区免费在线观看 | 久章草在线视频 | 青青操精品 | 午夜国产在线观看 | 国产毛片在线看 | 中文区永久区 | 91看点 | 西川av在线一区二区三区 | 黄色片网站在线看 | 中国一级无毛黄色 | 久久精品免费网站 | 亚洲精品成人久久 | 成人午夜免费在线观看 | 88xx成人精品视频 | 在线看小早川怜子av | 精品一区二区三区在线观看视频 | 日韩欧美动作影片 | 久草在线观看资源 | 成人午夜免费看 | 九九热免费视频在线观看 | 国产91在线播放九色 | 91看片免费版 | 黄色av片三级三级三级免费看 | 欧美亚洲黄色 | 亚洲人成在线播放网站 | 国产精品一区在线观看 | wwwav国产| 亚洲福利视频52 | 国产精品手机在线亚洲 | 成人aaaaa片毛片按摩 | 国产三级在线观看a | 伦一区二区三区中文字幕v亚洲 | 久久99精品久久久久久国产越南 | 国产1区2 |