導航:首頁 > 源碼編譯 > androidocr識別源碼

androidocr識別源碼

發布時間:2022-02-28 01:42:16

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,在命令行工具中執行下面的步驟:

  1. cd<project-directory>

  2. curl-O

  3. curl-O

  4. tar-zxvftesseract-ocr-3.02.02.tar.gz

  5. tar-zxvfleptonica-1.69.tar.gz

  6. rm-ftesseract-ocr-3.02.02.tar.gz

  7. rm-fleptonica-1.69.tar.gz

  8. mvtesseract-3.02.02jni/com_googlecode_tesseract_android/src

  9. mvleptonica-1.69jni/com_googlecode_leptonica_android/src

  10. ndk-build-j8

  11. androipdateproject--target1--path.

  12. 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:

  1. publicclassTessOCR{

  2. privateTessBaseAPImTess;

  3. publicTessOCR(){

  4. //TODOAuto-generatedconstructorstub

  5. mTess=newTessBaseAPI();

  6. Stringdatapath=Environment.getExternalStorageDirectory()+"/tesseract/";

  7. Stringlanguage="eng";

  8. Filedir=newFile(datapath+"tessdata/");

  9. if(!dir.exists())

  10. dir.mkdirs();

  11. mTess.init(datapath,language);

  12. }

  13. publicStringgetOCRResult(Bitmapbitmap){

  14. mTess.setImage(bitmap);

  15. Stringresult=mTess.getUTF8Text();

  16. returnresult;

  17. }

  18. publicvoidonDestroy(){

  19. if(mTess!=null)

  20. mTess.end();

  21. }

  22. }

構造函數中需要在存儲卡上創建一個目錄tessdata,如果不創建程序運行就會出錯。因為源碼中會檢測這個目錄,不存在就拋出異常:

  1. publicbooleaninit(Stringdatapath,Stringlanguage){

  2. if(datapath==null){

  3. ("Datapathmustnotbenull!");

  4. }

  5. if(!datapath.endsWith(File.separator)){

  6. datapath+=File.separator;

  7. }

  8. Filetessdata=newFile(datapath+"tessdata");

  9. if(!tessdata.exists()||!tessdata.isDirectory()){

  10. ("!");

  11. }

  12. returnnativeInit(datapath,language);

  13. }

就這么簡單。現在通過三種方式獲取圖片做OCR:

在圖庫中選取一張圖,選擇發送或者分享,選擇OCR應用

在AndroidManifest.xml中加入IntentFilter,讓OCR應用出現在圖庫的分享列表中:

  1. <intent-filter>

  2. <actionandroid:name="android.intent.action.SEND"/>

  3. <categoryandroid:name="android.intent.category.DEFAULT"/>

  4. <dataandroid:mimeType="text/plain"/>

  5. <dataandroid:mimeType="image/*"/>

  6. </intent-filter>

獲得URI之後,對URI解碼,獲取bitmap:

  1. if(Intent.ACTION_SEND.equals(intent.getAction())){

  2. Uriuri=(Uri)intent.getParcelableExtra(Intent.EXTRA_STREAM);

  3. uriOCR(uri);

  4. }

  5. privatevoiriOCR(Uriuri){

  6. if(uri!=null){

  7. InputStreamis=null;

  8. try{

  9. is=getContentResolver().openInputStream(uri);

  10. Bitmapbitmap=BitmapFactory.decodeStream(is);

  11. mImage.setImageBitmap(bitmap);

  12. doOCR(bitmap);

  13. }catch(FileNotFoundExceptione){

  14. //TODOAuto-generatedcatchblock

  15. e.printStackTrace();

  16. }finally{

  17. if(is!=null){

  18. try{

  19. is.close();

  20. }catch(IOExceptione){

  21. //TODOAuto-generatedcatchblock

  22. e.printStackTrace();

  23. }

  24. }

  25. }

  26. }

  27. }

啟動OCR應用,從圖庫中選擇一張圖做OCR

發送Intent調用圖庫,在onActivityResult中獲取返回的URI做OCR:

  1. Intentintent=newIntent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

  2. startActivityForResult(intent,REQUEST_PICK_PHOTO);

啟動OCR應用,拍照之後做OCR

為了獲取高質量的圖片,在Intent中加入圖片路徑。返回之後就可以直接使用這個圖片路徑解碼:

  1. (){

  2. IntenttakePictureIntent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);

  3. //Ensurethatthere'

  4. if(takePictureIntent.resolveActivity(getPackageManager())!=null){

  5. //

  6. FilephotoFile=null;

  7. try{

  8. photoFile=createImageFile();

  9. }catch(IOExceptionex){

  10. //

  11. }

  12. //

  13. if(photoFile!=null){

  14. takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,

  15. Uri.fromFile(photoFile));

  16. startActivityForResult(takePictureIntent,REQUEST_TAKE_PHOTO);

  17. }

  18. }

  19. }

不要忘記下載語言包,並push到存儲卡的tessdata目錄下。

閱讀全文

與androidocr識別源碼相關的資料

熱點內容
app上訴通訊錄有什麼後果 瀏覽:513
關於加密貨幣使用分布的圖表 瀏覽:337
王的命令哪個app好看 瀏覽:769
快樂大本營比臉app叫什麼 瀏覽:681
wt是什麼伺服器 瀏覽:127
首頁indexphp模板 瀏覽:343
java7並發編程實戰手冊pdf 瀏覽:342
windows列印機編程 瀏覽:236
怎麼用紙做解壓小方塊 瀏覽:266
8253的編程方式 瀏覽:142
雲伺服器無法連接到當前網路 瀏覽:469
香港伺服器什麼時候租用 瀏覽:600
福州高精密三坐標測量儀編程 瀏覽:711
變數的作用域編譯預處理 瀏覽:179
程序員買台式機好還是筆記本 瀏覽:812
安卓叮當貓年卡怎麼樣 瀏覽:428
自學旅遊英語用什麼app 瀏覽:155
linux埠開放命令 瀏覽:681
單片機小汽車 瀏覽:953
思考與決策pdf 瀏覽:624