本教程展示了如何识别文本图像使用LEADTOOLS SDK在Android的Java应用程序。
概述 | |
---|---|
总结 | 本教程介绍了如何从图像中提取文本在一个Android的Java应用程序。 |
完成时间 | 20分钟 |
Android工作室项目 | 下载教程项目(1 MB) |
平台 | Android (Java) |
IDE | Android工作室 |
运行许可证 | 下载LEADTOOLS |
熟悉基本的步骤创建一个项目的审查添加引用和设置一个许可证和Android——开始使用Maven教程,在工作之前与OCR识别文本图像——Android Java教程。
在Android工作室里,创建一个新的Android (Java)项目,添加的工件。
许可解锁项目需要的特性。它必须设置工具箱函数被调用之前。详情,包括教程为不同的平台,请参考设置一个运行时许可。
有两种类型的运行时许可证:
请注意
添加LEADTOOLS本地引用和设置许可中会详细介绍添加引用和设置一个许可证教程。
在Project Explorer窗口,打开activity_main.xml
文件中发现的应用程序/ src / main / res /布局
目录中。以下RasterImageViewer XML代码添加一个新的运行OCR
按钮。
<LinearLayout xmlns: android = " http://schemas.android.com/apk/res/android "
android: layout_width = " match_parent "
android: layout_height = " match_parent "
android:取向=“垂直”
android: weightSum = " 1.0 "
android:背景= " @android:颜色/黑”>
<按钮
android: layout_width = " wrap_content "
android: layout_height = " wrap_content "
android:文本= "选择画廊”的形象
android: onClick = " onSelectImage " />
<leadtools.controls.RasterImageViewer
android: id =“@ + id / rasterimageviewer”
android: layout_width = " match_parent "
android: layout_height = " 0 dp”
android: layout_weight = " .96点"
android:背景=“@android:颜色/白色/>
<按钮
android: id =“@ + id /按钮”
android: layout_width = " wrap_content "
android: layout_height = " wrap_content "
android:文本= " OCR运行”
android: onClick = " ocr " />
<LinearLayout />
在MainActivity.java
前,添加以下导入语句MainActivity类:
进口leadtools.ocr.OcrEngine;
进口leadtools.ocr.OcrEngineManager;
进口leadtools.ocr.OcrEngineType;
进口leadtools.ocr.OcrImageSharingMode;
进口leadtools.ocr.OcrPage;
进口leadtools.ocr.OcrPageCharacters;
进口leadtools.ocr.OcrWord;
进口leadtools.ocr.OcrZoneCharacters;
添加以下MainActivity类的成员变量:
私人OcrEngine OcrEngine;
私人StringBuilder某人;
更新onCreate ()
函数如下所示:
@Override
受保护的无效onCreate(包savedInstanceState) {
超级.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
/ /加载LEADTOOLS本地库
试一试{
Platform.setLibPath (sharedLibsPath);
Platform.loadLibrary (LTLibrary.LEADTOOLS);
Platform.loadLibrary (LTLibrary.CODECS);
Platform.loadLibrary (LTLibrary.OCR);
Platform.loadLibrary (LTLibrary.DOCUMENT_WRITER);
Platform.loadLibrary (LTLibrary.IMAGE_PROCESSING_CORE);
}
抓(异常交货){
Log.d(标签,“失败加载LEADTOOLS本地库”);
}
某人=新StringBuilder ();
.getPath字符串sdCardRoot = Environment.getExternalStorageDirectory () ();/ /
如果(! sdCardRoot.endsWith (“/”))
sdCardRoot + =“/”;
字符串resourceDir = sdCardRoot +“MyApp /”;
字符串ocrLanguageFileDir = resourceDir +“OCRRuntime /”;
字符串substitutionFontsDir = resourceDir +“SubstitutionFonts /”;
如果(! Utils.copyOcrRuntimeFiles (这,ocrLanguageFileDir)) {
Log.d(标签,“未能复制OCR语言文件”);
完成();
}
如果(! Utils.copyAssetsFiles (这,“substitution_fonts”,substitutionFontsDir)) {
Log.d(标签,“失败的副本替换字体”);
完成();
}
试一试
{
/ /设置替换字体路径和启动OCR引擎
RasterDefaults.setResourceDirectory (LEADResourceDirectory。字体,substitutionFontsDir);
ocrEngine = OcrEngineManager.createEngine (OcrEngineType.LEAD);
ocrEngine.startup (零,零,零,ocrLanguageFileDir);
}
抓(异常e)
{
Toast.makeText (这Toast.LENGTH_LONG e.getMessage()),告诉();
}
如果! (ocrEngine.isStarted ())
{
Toast.makeText (这,“OCR引擎没有开始成功”Toast.LENGTH_LONG),告诉();
}
}
创建一个ocr(查看v)
允许文件的解析函数。添加以下代码:
公共无效ocr(查看v)
{
RasterImage图像= mViewer.getImage ();
如果(图片! =零)
{
OcrPage OcrPage = ocrEngine。createPage(图片、OcrImageSharingMode.AUTO_DISPOSE);
ocrPage.recognize (零);
OcrPageCharacters OcrPageCharacters = ocrPage.getRecognizedCharacters ();
为(OcrZoneCharacters ocrzonechar ocrpageCharacters):
{
收集< OcrWord >词= ocrzonechar.getWords ();
为(OcrWord词:词)
{
sb.append (word.getValue ());
}
}
Toast.makeText (这Toast.LENGTH_LONG sb.toString()),告诉();
}
其他的
{
Toast.makeText (这,“没有加载文件”Toast.LENGTH_LONG),告诉();
}
}
新闻Shift + F10运行该应用程序。遵循以下步骤来测试应用程序。
从画廊选择图像
加载在一个图像。选择运行OCR
按钮读取图像并输出结果。
本教程展示了如何运行OCR识别图像。