1. 幫忙從pudn上下載基於tesseract實現-android OCR
http://download3.pudn.com/downloads302/sourcecode/multimedia/streaming/56541300RobotReader.rar
附件有些大,直接點擊下載吧,不要用迅雷
2. 簡要說說Android系統ocr實現的原理
二維碼 是成熟的技術可以調用庫
如果是其他自動識別中文,英文的有字型檔 , 但是需要自己去匹配了
先識別一個一個的圖像像素 然後把像素形成的字體 換到庫進行比對識別 然後輸出!
OCR 技術 現在一般都是有針對的開發,因為字體太多了,識別率很差!
3. 如何通過Tesseract開源OCR引擎創建Android OCR應用
1要編譯Android平台的Tesseract,需要使用Google提供的tesseract-android-tools。
代碼獲取方式:
4. TessBaseAPI在安卓上實現OCR文字識別時候,編譯沒錯誤,運行時會異常終止,可能是什麼原因急!!
之後,它被谷歌大幅改進,很可能是識別率最高的可用開源 OCR 引擎之一了。結合 ... 接下來需要對下載下來的 tess-two 進行編譯 如何用 android ndk 進行 so 的編譯我放在了... 包leptonica 的類我們不必使用,只要使用 tess 包的類就行了 下面是 tessBaseAPI 的主要...
5. android怎麼調用tesseract實現OCR功能
android調用tesseract實現OCR功能的方法為:
一、下載&編譯
1、首先下載tess-two
git clone git://github.com/rmtheis/tess-two tess
2、進入 tess目錄,裡面有三個項目,只需要進入tess-two就可以直接編譯了
cd tess/tess-two
ndk-build
3、編譯好後,將src下的兩個包以及libs導入到自己的項目就可以用
二、使用
tesseract 使用了 leptonica的圖像處理庫,對於圖像處理還是比較強大的
Android官方地址:tesseract-android-tools
但它必須要一個匹配庫,即tessdata,我們可以從官方拷貝,在前面git的項目裡面tesseract源碼目錄有現成的tessdata可以用,對於中文,google code上也有下載,當然也可以自己訓練不同語言的tessdata。
包leptonica的類我們不必使用,只要使用tess包的類就行了
TessBaseAPI
使用時,首先創建TessBaseAPI對象
代碼為:
TessBaseAPI baseApi=new TessBaseAPI();
//初始化tess
//android下面,tessdata肯定得放到sd卡里了
//如果tessdata這個目錄放在sd卡的根目錄
//那麼path直接傳入sd卡的目錄
//eng就是英文,關於語言,按ISO 639-3標準的代碼就行,具體請移步wiki
baseApi.init("tessdata文件夾的父級目錄", "eng");
//options是為了縮放圖片,這個酌情縮放,圖片小的話可以不縮放
BitmapFactory.Options options=new BitmapFactory.Options();
//縮小為原來的1/2
options.inSampleSize=2;
//bitmap,我這里是以流的形式,只要能形成Bitmap就行
Bitmap bitmap = BitmapFactory.decodeStream(instream,null,options);
instream.close();
//如果圖片有Alpha值,那麼最好設置一下
/*ExifInterface exif = new ExifInterface(filename)
int exifOrientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
int rotate = 0;
switch (exifOrientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
}
if (rotate != 0) {
// Getting width & height of the given image.
int w = bitmap.getWidth();
int h = bitmap.getHeight();
// Setting pre rotate
Matrix mtx = new Matrix();
mtx.preRotate(rotate);
// Rotating Bitmap
bitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, false);
// tesseract req. ARGB_8888
bitmap = bitmap.(Bitmap.Config.ARGB_8888, true);
} */
//設置要ocr的圖片bitmap
baseApi.setImage(bitmap);
//根據Init的語言,獲得ocr後的字元串
String text= baseApi.getUTF8Text();
//釋放bitmap
baseApi.clear();
//如果連續ocr多張圖片,這個end可以不調用,但每次ocr之後,必須調用clear來對bitmap進行釋放
//釋放native內存
baseApi.end();
///////////////////////////其它方法//////////////////////////////////
//獲取字元邊框
Pixa pixa= baseApi.getCharacters();
//同上,這個是整段文字的邊框
baseApi.getRegions();
//同上,只不過這里是條線
baseApi.getTextlines();
//剩下的自己測試吧。
//轉為rect數組 ,之後,可以很方便的在圖片上框出方框
//怎麼框由你
ArrayList<Rect> rects=pixa.getBoxRects();
6. android手機 ocr識別怎麼做
您好,可以使用全能掃描王一類的軟體,即可。
7. android平台的攝像頭取詞(ocr文字識別)翻譯應用
我可以給你,只有OCR。
8. android手機怎麼調用OCR識別圖像中的文字
下面是使用ocr文字識別軟體識別圖像文字的參考方法:
1、在電腦上准備一個ocr文字識別軟體,並打開;
2、通過左上角把圖片添加進去;
3、在上面選擇文件的識別格式和識別效果;
4、點擊左上角的添加文件按鈕,開始進行圖像文字識別;
希望上面使用ocr文字識別軟體進行圖像文字識別的方法,可以幫助到您!
9. 如何通過Tesseract開源OCR引擎創建Android OCR應用
Tesseract是圖盲,默認情況下只能看得懂未壓縮的TIFF圖像,如果直接用tesseract處理其它格式的圖片,會報錯如下:
Tesseract Open Source OCR Engine
name_to_image_type:Error:Unrecognized image type:code.jpg
IMAGE::read_header:Error:Can』t read this image type:code.jpg
tesseract:Error:Read of file failed:code.jpg
所以需要用ImageMagick來轉換圖片格式,ImageMagick (TM) 是一個免費的創建、編輯、合成圖片的軟體。它可以讀取、轉換、寫入多種格式的圖片。圖片切割、顏色替換、各種效果的應用,圖片的旋轉、組合,文本,直線,多邊形,橢圓,曲線,附加到圖片伸展旋轉。ImageMagick是免費軟體:全部源碼開放,可以自由使用,復制,修改,發布。它遵守GPL許可協議。它可以運行於大多數的操作系統。ImageMagick的大多數功能的使用都來源於命令行工具。通常來說,它可以支持以下程序語言: Perl, C, C++, Python, PHP, Ruby, Java;現成的ImageMagick介面(PerlMagick, Magick++, PythonMagick, MagickWand for PHP, RubyMagick, and JMagick)是可利用的。這使得自動的動態的修改創建圖片變為可能。ImageMagick支持至少90種圖片格式: A, ART, AVI, AVS, B, BIE, BMP, BMP2, BMP3, C, CACHE, CAPTION, CIN, CIP, CLIP, CLIPBOARD, CMYK, CMYKA, CUR, CUT, DCM, DCX, DNG, DOT, DPS, DPX, EMF, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, FAX, FITS, FPX, FRACTAL, G, G3, GIF, GIF87, GRADIENT, GRAY, HDF, HISTOGRAM, HTM, HTML, ICB, ICO, ICON, JBG, JBIG, JNG, JP2, JPC, JPEG, JPG, JPX, K, LABEL, M, M2V, MAP, MAT, MATTE, MIFF, MNG, MONO, MPC, MPEG, MPG, MSL, MTV, MVG, NULL, O, OTB, P7, PAL, PALM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PFA, PFB, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG24, PNG32, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSD, PTIF, PWP, R, RAS, RGB, RGBA, RGBO, RLA, RLE, SCR, SCT, SFW, SGI, SHTML, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, TIF, TIFF, TILE, TIM, TTC, TTF, TXT, UIL, UYVY, VDA, VICAR, VID, VIFF, VST, WBMP, WMF, WMFWIN32, WMZ, WPG, X, XBM, XC, XCF, XPM, XV, XWD, Y, YCbCr, YCbCrA, YUV,
ImageMagick .NET的相關項目:
Use MagickNet to convert, compose, and edit images from Windows .NET.
ImageMagickApp is a .NET application written in C# that utilizes the ImageMagick command line to allow conversion of multiple image formats to different formats.
假設需要識別的圖片驗證碼為code.jpg,我們需要做的只有兩步:
d:\ImageMagick\convert.exe -compress none -depth 8 -alpha off ./code.gif ./code.tif
D:\\tesseract\\tesseract.exe ./code.tif ./result
結果就在文本文件./result.txt裡面了,tesseract會自動地在./result後面添加上後綴名.txt。然後再對兩個命令做點解釋。
convert.exe:ImageMagick套件的一部分,負責圖片格式轉換,各個參數的意義如下:
-compress none:轉換後的圖片不要壓縮,如果沒有加這一項,後續tesseract處理的時候會報錯:read_tif_image:Error:Illegal image format:Compression
-depth 8:設置轉換後圖像的色深為8位,也就是bpp為8。如果沒有此參數,後果如下:
Tesseract Open Source OCR Engine
check_legal_image_size:Error:Only 1,2,4,5,6,8 bpp are supported:16
Segmentation fault
-alpha off:在轉換後的圖像中不要添加alpha圖層。如果沒有此參數,後果同上。
緊跟著就是待轉換的圖片的文件名,最後是轉換後的圖片的文件名。
10. 如何通過Tesseract開源OCR引擎創建Android OCR應用
Tesseract是遵守Apache License 2.0協議的開源OCR引擎。
如何在Android平台編譯Tesseract,以及如何快速創建一個簡單的OCR應用。
Tesseract Android Tools
要編譯Android平台的Tesseract,需要使用Google提供的tesseract-android-tools。
代碼獲取方式:
打開README,在命令行工具中執行下面的步驟:
cd<project-directory>
curl-O
curl-O
tar-zxvftesseract-ocr-3.02.02.tar.gz
tar-zxvfleptonica-1.69.tar.gz
rm-ftesseract-ocr-3.02.02.tar.gz
rm-fleptonica-1.69.tar.gz
mvtesseract-3.02.02jni/com_googlecode_tesseract_android/src
mvleptonica-1.69jni/com_googlecode_leptonica_android/src
ndk-build-j8
androipdateproject--target1--path.
antdebug(release)
注意:如果在使用NDK r9,編譯的時候會出現錯誤:
[-Werror=format-security]
解決的方法就是在Application.mk中加入一行:
APP_CFLAGS+=-Wno-error=format-security
編譯之後會生成class.jar和一些*.so。
Android OCR Application
創建一個Android應用,把生成的jar和so導入進來。
創建TessOCR:
publicclassTessOCR{
privateTessBaseAPImTess;
publicTessOCR(){
//TODOAuto-generatedconstructorstub
mTess=newTessBaseAPI();
Stringdatapath=Environment.getExternalStorageDirectory()+"/tesseract/";
Stringlanguage="eng";
Filedir=newFile(datapath+"tessdata/");
if(!dir.exists())
dir.mkdirs();
mTess.init(datapath,language);
}
publicStringgetOCRResult(Bitmapbitmap){
mTess.setImage(bitmap);
Stringresult=mTess.getUTF8Text();
returnresult;
}
publicvoidonDestroy(){
if(mTess!=null)
mTess.end();
}
}
構造函數中需要在存儲卡上創建一個目錄tessdata,如果不創建程序運行就會出錯。因為源碼中會檢測這個目錄,不存在就拋出異常:
publicbooleaninit(Stringdatapath,Stringlanguage){
if(datapath==null){
("Datapathmustnotbenull!");
}
if(!datapath.endsWith(File.separator)){
datapath+=File.separator;
}
Filetessdata=newFile(datapath+"tessdata");
if(!tessdata.exists()||!tessdata.isDirectory()){
("!");
}
returnnativeInit(datapath,language);
}
就這么簡單。現在通過三種方式獲取圖片做OCR:
在圖庫中選取一張圖,選擇發送或者分享,選擇OCR應用
在AndroidManifest.xml中加入IntentFilter,讓OCR應用出現在圖庫的分享列表中:
<intent-filter>
<actionandroid:name="android.intent.action.SEND"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
<dataandroid:mimeType="text/plain"/>
<dataandroid:mimeType="image/*"/>
</intent-filter>
獲得URI之後,對URI解碼,獲取bitmap:
if(Intent.ACTION_SEND.equals(intent.getAction())){
Uriuri=(Uri)intent.getParcelableExtra(Intent.EXTRA_STREAM);
uriOCR(uri);
}
privatevoiriOCR(Uriuri){
if(uri!=null){
InputStreamis=null;
try{
is=getContentResolver().openInputStream(uri);
Bitmapbitmap=BitmapFactory.decodeStream(is);
mImage.setImageBitmap(bitmap);
doOCR(bitmap);
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
if(is!=null){
try{
is.close();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
}
啟動OCR應用,從圖庫中選擇一張圖做OCR
發送Intent調用圖庫,在onActivityResult中獲取返回的URI做OCR:
Intentintent=newIntent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent,REQUEST_PICK_PHOTO);
啟動OCR應用,拍照之後做OCR
為了獲取高質量的圖片,在Intent中加入圖片路徑。返回之後就可以直接使用這個圖片路徑解碼:
(){
IntenttakePictureIntent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);
//Ensurethatthere'
if(takePictureIntent.resolveActivity(getPackageManager())!=null){
//
FilephotoFile=null;
try{
photoFile=createImageFile();
}catch(IOExceptionex){
//
}
//
if(photoFile!=null){
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent,REQUEST_TAKE_PHOTO);
}
}
}
不要忘記下載語言包,並push到存儲卡的tessdata目錄下。