我正在研究一個應用程序,它需要將jpeg圖像轉換爲文本,以便我可以識別圖像中寫入的文本。請給我一個指導來做到這一點。android:從圖像中提取文本
5
A
回答
1
摘自Making OCR app using Tesseract.
注:這些說明適用於Android的SDK R19和Android NDK R7C。在64位Ubuntu上,您可能需要安裝ia32-libs 32位兼容性庫。您還需要添加適當的PATH變量。
下載報告或者編入文件git repository。該項目包含用於編譯用於Android的Tesseract,Leptonica和JPEG庫的工具。它包含一個Eclipse Android庫項目,該項目提供了一個用於訪問本機編譯的Tesseract和Leptonica API的Java API。你不需要眼睛 - 兩個代碼,你可以沒有它。
構建這個項目中使用這些命令(在這裏,苔絲,二是裏面的目錄苔絲二 - 一個在同一水平苔絲 - 雙測試):
cd <project-directory>/tess-two
ndk-build
android update project --path .
ant release
現在導入項目作爲Eclipse中的一個庫。
File -> Import -> Existing Projects into workspace -> tess-two directory<code>. Right click the project, Android Tools -> Fix Project Properties. Right click -> Properties -> Android -> Check Is Library
配置項目中使用的苔絲個項目作爲庫項目:
Right click your project name -> Properties -> Android -> Library -> Add, and choose tess-two.
現在,您可以使用該庫到OCR的任何圖像。
首先,我們需要獲取圖片本身。爲此,我在這裏找到了一個簡單的代碼來捕獲圖像。在我們獲得位圖後,我們只需要執行相對容易的OCR。一定要通過做這樣的事情來糾正旋轉和圖像類型:
// _path = path to the image to be OCRed
ExifInterface exif = new ExifInterface(_path);
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) {
int w = bitmap.getWidth();
int h = bitmap.getHeight();
// Setting pre rotate
Matrix mtx = new Matrix();
mtx.preRotate(rotate);
// Rotating Bitmap & convert to ARGB_8888, required by tess
bitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, false);
}
bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
現在我們有位圖圖像,我們可以簡單地使用TessBaseAPI運行OCR喜歡:
TessBaseAPI baseApi = new TessBaseAPI();
// DATA_PATH = Path to the storage
// lang = for which the language data exists, usually "eng"
baseApi.init(DATA_PATH, lang);
// Eg. baseApi.init("/mnt/sdcard/tesseract/tessdata/eng.traineddata", "eng");
baseApi.setImage(bitmap);
String recognizedText = baseApi.getUTF8Text();
baseApi.end();
(You can download the language files from [here][2] and put them in a directory on your device – manually or by code)
現在你已經在變量identText中獲得了OCR文本,你可以做任何事情 - 翻譯,搜索,任何事情! PS。您可以通過首選項添加各種語言支持,然後從here下載所需的語言數據文件。您甚至可以將它們放入資產文件夾並在開始時將它們複製到SD卡中。
故障排除
- 關於更新路徑 - 您需要更新的命令功能PATH變量,否則你會看到沒有找到錯誤的命令。對於Android SDK,將SDK工具和平臺工具目錄的位置添加到PATH環境變量中。對於Android NDK,使用相同的過程將android-ndk目錄添加到PATH變量。
- Maven-ising - 查看James Elsey的post。他還提到他在Windows上工作時沒有任何問題。
- 您也可以嘗試在此頁面上按Ctrl + F查看您的問題,有人可能已經遇到了問題並在評論中發佈瞭解決方案。
相關問題
- 1. AS3 - 從圖像中提取文本
- 2. 從圖像中提取文本
- 3. 從圖像中提取文本
- 4. Vb.net從圖像中提取文本
- 5. 從圖像中提取文本。 OCR
- 6. 如何從圖像中提取文本Android應用
- 7. 在Android中從html中提取圖像
- 8. 從文本文件中提到的路徑中讀取圖像
- 9. Android圖像提取
- 10. 如何在Android上使用iText從PDF文件中提取圖像和文本
- 11. 從Asp.Net核心提取PDF文件中的圖像和文本
- 12. 使用Python從word文檔中提取圖像和文本
- 13. 從pdf文件中提取所有圖像和文本
- 14. 從PDF文件中提取文本和圖像
- 15. 從文件夾中提取圖像
- 16. 從HL7文件中提取圖像
- 17. 從自然圖像中提取文字
- 18. 從圖像文件中提取座標
- 19. 從圖像文件中提取屬性
- 20. 從.plist文件中提取.png圖像
- 21. 從Excel文檔中提取圖像
- 22. 從MJPG文件中提取圖像幀
- 23. 從SWF文件中提取圖像
- 24. Android - 從短信中提取文本
- 25. 使用java從100個圖像URL的文本文件中提取圖像
- 26. 從圖像中提取圖像
- 27. 在android中,你將如何從圖像按鈕提取圖像?
- 28. 從PDF中提取圖像
- 29. 從圖像中提取
- 30. 從圖像中提取x%
的[機器人OCR?](http://stackoverflow.com/questions/1106202/android-ocr) – EboMike 2012-03-26 19:24:17
谷歌最近發佈了一個API OCR實現這一可能重複:https://developers.google.com/vision/text-overview – Wirling 2016-06-28 10:53:07