如何在Android中使用Tesseract?

Pal*_*avi 18 ocr android tesseract android-ndk

我在网上搜了几个小时.我得到了许多答案,说我们需要使用NDK等来为WINDOWS的"Tesseract".

但是我没有逐步/正确地解释安装NDK时应该做什么.如何获取.so文件?我已经完成安装NDK和Cygwin.为了检查它是否正确完成,我输入make -v并给出了预期的输出.

任何使用过"Tesseract"的人都可以告诉我他们是如何做到的吗?(我已下载"Mezzofanti",但在那里我没有找到任何"Tesseract"文件.)

Yul*_*mok 17

您需要使用tess-two项目在Android上使用Tesseract.
tess-two包含用于编译Tesseract和Leptonica库以在Android平台上使用的工具.它提供了一个Java API,用于访问本机编译的Tesseract和Leptonica API.

在项目中添加tess-two:

添加到build.gradl e:

dependencies {
    compile 'com.rmtheis:tess-two:5.4.1'
}
Run Code Online (Sandbox Code Playgroud)

使用Tesseract:

import com.googlecode.tesseract.android.TessBaseAPI;

private String extractText(Bitmap bitmap) throws Exception{
    TessBaseAPI tessBaseApi = new TessBaseAPI();
    tessBaseApi.init(DATA_PATH, "eng");
    tessBaseApi.setImage(bitmap);
    String extractedText = tessBaseApi.getUTF8Text();
    tessBaseApi.end();
    return extractedText;
}
Run Code Online (Sandbox Code Playgroud)

您可以查看我使用Tesseract for Android的简单一流示例.它只包含200行Java代码.

  • @Lokesh尝试使用Google Vision OCR代替Tesseract。它不是免费的,而是便宜的。对于多种语言和任何角度,它都能提供出色的效果。 (2认同)
  • @Lokesh 虽然 OCR 是本地设备上的 CPU 和内存密集型任务,但使用服务器解决方案有其自身的缺点。您必须将图片数据上传到服务器(图片需要上传数十至几兆字节的数据,具体取决于分辨率和预处理 = 上传需要时间)。并且您必须确保您的解决方案相当安全(例如,如果您尝试扫描身份证,您应该在解决方案的安全性上花费大量预算,因为照片的泄漏会非常敏感)。最后,在设备上进行 OCR 可能更安全+更快。 (2认同)
  • @Lokesh 实际上很大程度上取决于图片数据的来源。如果您正在对来自 Internet 的某些数据进行 OCR,那么使用所需的 url 向您的服务器服务发出请求可能会更快,让服务器下载图像,运行 OCR 并将文本结果发送到应用程序..如果图像的来源是设备摄像头,那么将原始数据上传到服务器可能会出现问题(耗时太长+数据太多),但是通过一些繁重的预处理,您可能只能上传 50-200kB 的图片数据,这对于某些国家/地区可能没问题良好的数据服务。 (2认同)

Utt*_*tam 15

你可以参考这个文档,它一步一步地给出了你需要做的是将tesseract-android-tools项目设置为Eclipse中的库项目,并告诉你的项目引用库项目.所以你需要在Eclipse中有两个项目,

http://rmtheis.wordpress.com/2011/08/06/using-tesseract-tools-for-android-to-create-a-basic-ocr-app/

我希望这有帮助......