OCR 集成到 Camera2

OCR integration to Camera2

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

Camera2的使用方法就不给你说了API,你自己去看看试试吧


一般做法:

在您的相机管理器中实现 OnImageAvailableListener 界面 class

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, pay attention on OcrRecognizeAsyncTask