Java文字識別技術(shù)_第1頁
Java文字識別技術(shù)_第2頁
Java文字識別技術(shù)_第3頁
Java文字識別技術(shù)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Java 文字識別技術(shù)java文字識別程序的關(guān)鍵是尋找一個可以調(diào)用的 OCR引擎。tesseract-ocr就是一個這樣的 OCR 引擎,在 1985 年到 1995 年由 HP 實(shí)驗(yàn)室開發(fā), 現(xiàn)在在 Google 。 tesseract-ocr 3.0 發(fā)布,支持中文。不過 tesseract-ocr 3.0 不是圖形化界面的客戶端,別人寫的 FreeOCR 圖形化客戶端還不支持導(dǎo)入 新的 3.0 traineddata 。但這標(biāo)志著,現(xiàn)在有自由的中文 OCR 軟件了。java 中使用 tesseract-ocr3.01 的步驟如下:1. 下載安裝 tesseract-ocr-setup-3

2、.01-1.exe ( 3.0 以上版本才增加了中文識別)2. 在安裝向?qū)е锌梢赃x擇需要下載的語言包。3. 到網(wǎng)上搜索下載 java 圖形處理所需的 2 個包: jai_imageio-1.1-alpha.jar , swingx-1.6.1.jar4. 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.

3、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.med

4、ia.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.cr

5、eateImageInputStream(imageFile); reader.setInput(iis);/Read the stream metadataIIOMetadata streamMetadata = reader.getStreamMetadata();/Set up the writeParamTIFFImageWriteParam tiffWriteParam = new TIFFImageWriteParam(Locale.CHINESE); tiffWriteParam.setCompressionMode(ImageWriteParam.MODE_DISABLED);

6、/Get tif writer and set output to fileIterator 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 = Image

7、IO.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

8、();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.ut

9、il.ArrayList;import java.util.List;import org.jdesktop.swingx.util.OS;public class OCR private final Stri ng LANG_OPTION = -I; /英文字母小寫 |,并非數(shù)字 1private final String EOL = System.getProperty(line.separator);private String tessPath = C:/Program Files (x86)/Tesseract-OCR;/private String tessPath = new F

10、ile(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 ArrayLi

11、st();if(OS.isWindowsXP()cmd.add(tessPath+/tesseract);else if(OS.isLinux()cmd.add(tesseract);elsecmd.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.

12、set(1, tempImage.getName();mand(cmd);pb.redirectErrorStream(true);Process process = pb.start();/tesseract.exe 1.jpg 1 -l chi_simint w = process.waitFor();/刪除臨時正在工作文件tempImage.delete();if(w=0)BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(outputFile.getAbsolutePath()

13、+.txt),UTF-8);String str;while(str = in.readLine()!=null)strB.append(str).append(EOL);in.close();elseString msg;switch(w)case 1:msg = Errors accessing files.There may be spaces in your images filename.; break;case 29:msg = Cannot recongnize the image or its selected region.;break;case 31:msg = Unsup

14、ported 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().recogn

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論