我正在研究一个应用程序,它需要将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