android - OCR 集成到 Camera2

标签 android android-ndk tesseract android-camera2 card.io

我需要为我 future 的项目提供一些建议。我正在为一些 ID 文档开发 OCR 项目,为此我已经集成了 card.io 和 tess-two 并为我的项目覆盖了这个源。但我的主要目的是关于相机。我使用已经在card.io源中实现的Camera1。但说到google开发者,他们强烈推荐Camera2。当我尝试阅读我的文档时,我遇到了一些有关聚焦、模糊部分等问题。我的算法的大部分都在 native 端。如果有人已经体验过这些技术,您可以推荐什么?如果我将我的代码从camera1集成到camera2,我可以获得更好的结果吗?感谢您阅读我的大问题;)

最佳答案

我不会向您介绍如何使用 Camera2 API,您应该自行阅读并尝试。


一般方法:

实现OnImageAvailableListener 相机管理器类中的接口(interface)

public final class CameraManager implements ImageReader.OnImageAvailableListener {

@Override
public synchronized void onImageAvailable(ImageReader reader) {
    Image image = reader.acquireLatestImage();
    if (image != null) {
        analyzeFrame(image);
    }
}

创建 ImageReader 并在相机打开之前初始化

private ImageReader imageReader;
private void initialize() {
    //I'm using YUV_420_888 for streaming
    //you may use any supported format from:
    //https://developer.android.com/reference/android/graphics/ImageFormat.html
    imageReader = ImageReader.newInstance(PREVIEW_WIDTH, PREVIEW_HEIGHT, ImageFormat.YUV_420_888, 1);
                    imageReader.setOnImageAvailableListener(this, null);
}

imageReader的表面添加到CaptureRequest.Builder 相机打开后

Surface imageSurface = imageReader.getSurface();
//...
previewRequestBuilder.addTarget(imageSurface);

analyzeFrame方法中处理每个帧

private void analyzeFrame(Image image) {
    //...<-- image processing
    image.close();
}

Which Camera api you use?

Camera2 API .

If i integrate my codes from camera1 to camera2, can i get better results?

简短的回答是,您将得到相同的帧来处理

If anyone have already experienced with these technologies, what could you recommend?

我建议您使用 tess-two ,关注OcrRecognizeAsyncTask

关于android - OCR 集成到 Camera2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43774940/

相关文章:

android - 我可以使用 NDK 在 Android 上构建命令行应用程序吗?

bash - 找不到 Tesseract unicharset_extractor 命令

java - 错误 : no suitable constructor found for ArrayAdapter(Tab1Fragment, int,ArrayList <字符串>)

android - 处理主页按钮 android 以开发锁屏

c - JNI-未固定的原始数组错误

Android在编译二进制文件时重建静态库

android - 在android中绘制自定义可绘制形状

android - ld 返回 1 退出状态 - c

c++ - Tesseract API,白名单设置为数字但字母出现在结果中

python - 对图像执行 OCR 时,Tesseract 返回乱码