OCR字段识别

  • 本文关键字:识别 字段 OCR ocr
  • 更新时间 :
  • 英文 :


有人能帮我解决下一个问题吗?我们需要使用OCR技术,但我们不需要所有文本,只需要发票和收据中的一些字段,找不到更好的解决方案

如果你想开始移动应用程序的开发,你可以使用文本识别服务,其核心是OCR技术。例如,华为ML Kit文本识别API、谷歌Firebase ML的文本识别API等。您可以通过代码提取所需的文本信息(如果需要发票和收据(。

我将列出ML Kit文本识别集成的主要过程,您也可以在Github上下载演示。

  1. 准备工作

1(在项目级build.gradle文件中配置Maven存储库地址

buildscript {
repositories {
...
maven {url 'https://developer.huawei.com/repo/'}
}
}
dependencies {
...
classpath 'com.huawei.agconnect:agcp:1.3.1.300'
}
allprojects {
repositories {
...
maven {url 'https://developer.huawei.com/repo/'}
}
}

2(将配置添加到文件头

apply plugin: 'com.android.application'apply plugin: 'com.huawei.agconnect'

3(在应用程序级构建.gradle文件中配置SDK依赖项

dependencies {
// Import the base SDK.
implementation 'com.huawei.hms:ml-computer-vision-ocr:2.0.1.300'
// Import the Latin character recognition model package.
implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:2.0.1.300'
// Import the Japanese and Korean character recognition model package.
implementation 'com.huawei.hms:ml-computer-vision-ocr-jk-model:2.0.1.300'
// Import the Chinese and English character recognition model package.
implementation 'com.huawei.hms:ml-computer-vision-ocr-cn-model:2.0.1.300'
}

4(将这些语句添加到AndroidManifest.xml文件中,以便机器学习模型可以自动更新

<manifest>
...
<meta-data
android:name="com.huawei.hms.ml.DEPENDENCY"
android:value="ocr" />
...
</manifest>       

5(申请相机权限

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

2.代码开发

1(创建分析器

MLTextAnalyzer analyzer = new MLTextAnalyzer.Factory(context).setLanguage(type).create();

2(将识别结果处理器设置为与分析器绑定

analyzer.setTransactor(new OcrDetectorProcessor());

3(调用同步API

使用SDK内置的LensEngine创建对象、注册分析器并初始化相机参数。

lensEngine = new LensEngine.Creator(context, analyzer)
.setLensType(LensEngine.BACK_LENS)
.applyDisplayDimension(width, height)
.applyFps(30.0f)
.enableAutomaticFocus(true)
.create();      

4(调用run方法启动摄像头并读取摄像头流以进行识别

try {lensEngine.run(holder);} catch (IOException e) {// Exception handling logic.Log.e("TAG", "e=" + e.getMessage());}

5(根据需要处理识别结果

public class OcrDetectorProcessor implements MLAnalyzer.MLTransactor<MLText.Block> {
@Override
public void transactResult(MLAnalyzer.Result<MLText.Block> results) {
SparseArray<MLText.Block> items = results.getAnalyseList();
// Process the recognition result as required. Only the detection results are processed.
// Other detection-related APIs provided by ML Kit cannot be called.
…
}
@Override
public void destroy() {
// Callback method used to release resources when the detection ends.
}
}

6(检测结束时停止分析仪并释放检测资源

if (analyzer != null) {
try {
analyzer.stop();
} catch (IOException e) {
// Exception handling.
}
}
if (lensEngine != null) {
lensEngine.release();
}

你也可以在这里参考这篇媒体文章。

有关更多信息,请参阅官方文档。

我从LEADTOOLS SDK中了解到一些解决方案。Master Form编辑器和Document Analyzer听起来对您的用例都很有用。为了完全披露者的利益,这是我工作的公司,但如果不将其作为您场景的可能解决方案,我将是失职的。

这是一个指向YouTube视频的链接,该视频描述了Master Forms Editor技术的工作原理。https://www.youtube.com/watch?v=wo6TGcdrtb4

它本质上允许您在各种表单上定义预设区域,然后将文档与存储库中的表单进行比较。然后它将从这些区域提取数据,您可以随心所欲地管理OCR数据。

以及显示某些功能的编码实现的联机文档链接:https://www.leadtools.com/help/sdk/v21/dh/to/steps-to-generate-a-master-form-and-save-it-to-a-master-repository.html

这里有一个链接,指向我提到的另一个功能——文档分析器,我的一位同事在Microsoft Build Post Show中介绍了它。https://www.leadtools.com/blog/general/microsoft-build-post-show-v21-document-analyzer-demo/

这些例子的代码和使用的技术可以在60天的免费试用中找到,如果你有兴趣查看,可以从LEAD网站下载。https://www.leadtools.com/downloads

最新更新