【问题标题】:How can I use Tesseract in Android?如何在 Android 中使用 Tesseract?
【发布时间】:2011-12-04 08:07:15
【问题描述】:

我在网上搜索了几个小时。我得到了很多答案,说我们需要为 WINDOWS 的“Tesseract”使用 NDK 等。

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

任何使用过“Tesseract”的人都可以告诉我他们是如何做到的吗? (我已经下载了“Mezzofanti”,但没有找到任何“Tesseract”文件。)

【问题讨论】:

    标签: android ocr android-ndk tesseract


    【解决方案1】:

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

    将 tess-2 添加到您的项目中:

    添加到 build.gradle:

    dependencies {
        compile 'com.rmtheis:tess-two:5.4.1'
    }
    

    使用正方体:

    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;
    }
    

    您可以查看我的simple one-class example of using Tesseract for Android。它仅包含 200 行 Java 代码。

    【讨论】:

    • 不错!您应该以 api 22 为目标,因为您的应用不会向用户请求 runtime permissions
    • 试图澄清一点疑问。我认为 OCR 是 CPU 密集型的,你不认为在用户手持设备上执行 OCR 会导致他们的设备变慢。我猜想在服务器级别执行 OCR,然后将信息返回给用户会很棒。你怎么看?
    • @Lokesh 尝试使用 Google Vision OCR 代替 Tesseract。它不是免费的,而是便宜的。它为多语言和任何角度提供了出色的结果。
    • @Lokesh 虽然 OCR 是本地设备上的 CPU 和内存密集型任务,但使用服务器解决方案有其自身的缺点。您必须将图片数据上传到服务器(图片需要从几十KB到几兆字节的数据上传,具体取决于分辨率和预处理=上传需要时间)。而且您必须确保您的解决方案相当安全(例如,如果您尝试扫描人员 ID 卡,您应该在解决方案的安全性上花费大量预算,因为照片泄露会非常敏感)。最后,在设备上进行 OCR 可能更安全+更快。
    • @Lokesh 实际上很大程度上取决于图片数据的来源。如果您正在对来自 Internet 的某些数据进行 OCR,那么使用所需的 url 向您的服务器服务提出请求可能会更快,让服务器下载图像,运行 OCR 并将文本结果发送到应用程序。如果图像来源是设备相机,那么将原始数据上传到服务器可能会出现问题(花费时间太长+数据过多),但是通过一些繁重的预处理,您可能只能上传 50-200kB 的图片数据,这对于某些国家来说可能是可以的良好的数据服务。
    【解决方案2】:

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

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

    希望对你有所帮助.....

    【讨论】:

    • 我已经对我的问题进行了更改...我需要它用于 WINDOWS XP 操作系统。
    • 我浏览了“READ ME”,但它给出了错误“克隆到 libjpeg... android.git.kernel.org[0: 149.20.4.77]: errno=No route to host fatal :无法连接套接字(没有到主机的路由)”在这一步之后,“git clone git://android.git.kernel.org/platform/external/jpeg.git libjpeg”在自述文件中
    • 发现问题:这是备用镜像“github.com/android/platform_external_jpeg
    • @Pallavi 使用 git clone git://github.com/android/platform_external_jpeg.git libjpeg
    【解决方案3】:
    【解决方案4】:

    这个视频向你展示了它是如何完成的

    How can I use Tesseract in Android?

    确保: 1.创建文件夹 2. 在该文件夹中,您必须放置训练数据文件(您可以从此处以您需要的语言下载它https://github.com/tesseract-ocr/tessdata/tree/3.04.00) 3. 引用包含受训数据文件的文件夹的路径并说明语言: tessBaseApi.init(DATA_PATH, "eng");

    希望对你有帮助

    【讨论】:

    • 您发布的视频链接只不过是指向该主题本身的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多