使用java怎么識別圖片中的文字-創(chuàng)新互聯(lián)

本篇文章給大家分享的是有關使用java怎么識別圖片中的文字,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設,永州企業(yè)網(wǎng)站建設,永州品牌網(wǎng)站建設,網(wǎng)站定制,永州網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,永州網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

java中使用tesseract-ocr3.01的步驟如下:

1.下載安裝tesseract-ocr-setup-3.01-1.exe(3.0以上版本才增加了中文識別)

2.在安裝向導中可以選擇需要下載的語言包。

3.到網(wǎng)上搜索下載java圖形處理所需的2個包:jai_imageio-1.1-alpha.jar,swingx-1.6.1.jar

4.java程序清單:

ImageIOHelper 類:

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 { 
  
 public static File createImage(File imageFile, String imageFormat) { 
  File tempFile = null; 
  try { 
   Iterator 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 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")); 
 } 
 
}

OCR 類:

package com.hhp.util; 
 
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 (x86)//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 cmd = new ArrayList(); 
  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(); 
   
  //刪除臨時正在工作文件 
  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(); 
 } 
}

測試類TestOCR :

import java.io.File; 
import java.io.IOException; 
 
import com.hhp.util.OCR; 
 
public class OcrTest { 
 
 public static void main(String[] args) { 
  String path = "C://temp//OCRcode//4.png";  
  System.out.println("ORC Test Begin......"); 
  try {  
   String valCode = new OCR().recognizeText(new File(path), "png");  
   System.out.println(valCode);  
  } catch (IOException e) {  
   e.printStackTrace();  
  } catch (Exception e) { 
   e.printStackTrace(); 
  }   
  System.out.println("ORC Test End......"); 
 } 
 
}
Java有哪些集合類

Java中的集合主要分為四類:1、List列表:有序的,可重復的;2、Queue隊列:有序,可重復的;3、Set集合:不可重復;4、Map映射:無序,鍵唯一,值不唯一。

以上就是使用java怎么識別圖片中的文字,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文名稱:使用java怎么識別圖片中的文字-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://m.kartarina.com/article2/dchoic.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站網(wǎng)站改版網(wǎng)站內鏈網(wǎng)站制作品牌網(wǎng)站建設電子商務

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設公司
主站蜘蛛池模板: 国产精品无码久久久久| 国产精品爽爽va在线观看无码| 亚洲国产精品无码专区| 熟妇无码乱子成人精品| 亚洲AV无码AV日韩AV网站| 国产精品无码素人福利免费| 亚洲2022国产成人精品无码区| 久久AV高清无码| 亚洲?v无码国产在丝袜线观看| 色噜噜综合亚洲av中文无码| 亚洲高清无码综合性爱视频| 色综合久久久无码网中文| 亚洲日韩av无码| 无码专区一va亚洲v专区在线| 精品无码无人网站免费视频| 欧洲精品无码一区二区三区在线播放| 高清无码v视频日本www| 无码专区中文字幕无码| 国产丰满乱子伦无码专区| 日韩成人无码一区二区三区| 亚洲av专区无码观看精品天堂| 日韩精品无码免费专区网站| 人妻少妇乱子伦无码专区| 加勒比无码一区二区三区| 免费无码VA一区二区三区| 亚洲精品无码精品mV在线观看| 精品无码中出一区二区| 国产免费午夜a无码v视频| 无码人妻精品丰满熟妇区| 亚洲AV无码一区二区三区鸳鸯影院 | 黄色成人网站免费无码av| 免费A级毛片无码专区| 亚洲AV无码专区国产乱码电影| 国产a v无码专区亚洲av| 精品无人区无码乱码毛片国产| 国产成人无码AV片在线观看| 国产精品午夜无码AV天美传媒| 亚洲精品久久久久无码AV片软件| 亚洲av无码专区在线观看亚| 亚洲日韩中文字幕无码一区| 性色AV蜜臀AV人妻无码|