有人能帮我解决下一个问题吗?我们需要使用OCR技术,但我们不需要所有的文本,只需要发票和收据中的一些字段,找不到更好的解决方案
发布于 2020-12-02 14:45:49
如果你想开始开发移动应用,你可以使用文本识别服务,其核心是OCR技术。例如,Huawei ML Kit Text recognition API、Google Firebase ML's text recognition API等。您可以通过代码提取所需的文本信息(如果需要,可以提取发票和收据)。
我将列出ML工具包文本识别集成的主要步骤,您也可以在Github上下载演示。
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)。在应用级build.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)。调用同步接口
使用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();
}你也可以参考这篇媒体文章here。
有关更多信息,请参阅official documentation。
发布于 2020-12-04 01:15:13
据我所知,LEADTOOLS SDK有几个解决方案。主窗体编辑器和文档分析器听起来都可能对您的用例很有用。为了充分披露的利益,这是我工作的公司,但我将是疏忽不提及它作为您的方案的可能解决方案。
这是一个指向YouTube视频的链接,该视频描述了主窗体编辑器技术的工作原理。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
https://stackoverflow.com/questions/65078420
复制相似问题