赞
踩
在Android平台下,办公系统,ERP,CRM等开发过程中,需要对Doc, docx, xls, xlsx, ppt, ppts, pdf, html等各种格式的文件内容进行搜索和查找,实现这些格式文件正文分析提取是一件工作量巨大的工程。现在给大家推荐一款免费的开发组件Graccvs,完成文件正文提取分析,组件支持格式多,调用简单方便,正文提取速度快。
组件是以AAR格式提供的,这里是下载地址模板OCR识别工具--Graccvs文件正文提取开发组件--软件下载 (gaya-soft.cn)。 同时网站提供Android Studio工程示例说明Graccvs文件正文提取开发组件--Android--Java--在线帮助 (gaya-soft.cn)。
组件支持常见各种文件格式”.pdf", ".doc", ".odt", ".docx", ".dotm", ".docm", ".wps", ".xls", ".xlsx", ".xlsm", ".xltm", ".et", ".ppt", ".pptx", ".potm", ".pptm", ".ppsm", ".dps", ".ofd"(电子发票版式文件), ".rtf",".html", ".htm", ".mht", ".mhtml", ".eml", ".emmx", "xmind", "gmind", ".chm", ".zip" 等。
以下简单的调用过程:
1:创建工程。
2:app\libs文件夹导入graccvs.aar。
3:Android工程的app的build.gradle文件dependencies单元中增加如下代码
implementation files('libs/graccvs.aar')
4:调用初始化函数Load设置动态链接库需要的临时文件夹。
5:调用Auth注册,免费版本设置为空。
6:调用文件函数ToTextFile、HttpToString等提取N个不同文件的正文,或者使用异步函数批量处理文件。
7:完成文件提取任务后调用 Unload函数,释放资源组件使用的资源。
主要代码单元 MainActivity.java:
- package tx.graccvslibtest;
-
- import android.os.Bundle;
- import android.app.Activity;
- import android.content.pm.PackageManager;
- import androidx.appcompat.app.AppCompatActivity;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- import androidx.core.app.ActivityCompat;
- import java.io.File;
- import java.io.IOException;
- //注意:这里导入包含文件
- import graccvs.GraccvsLib;
-
- public class MainActivity extends AppCompatActivity {
- enum DllErrCode {
- TFE_OK,
- TFE_UNKNOW,
- TFE_FILE_NOTEXIST,
- TFE_SAVE_ERROR,
- TFE_OUTSIZE,
- TFE_UNSUPPORTED ,
- TFE_ERROR_INTERFACE ,
- TFE_HTTP_ERR,
- TFE_HTTP_FILE_NULL ,
- TFE_LICENCE_ERR;
- }
-
- // 根据错误类型返回错误信息
- public String codeText(DllErrCode code) {
- switch (code)
- {
- case TFE_OK:
- return "ok";
- case TFE_UNKNOW:
- return "未知错误";
- case TFE_FILE_NOTEXIST:
- return "提取源文件不存在";
- case TFE_SAVE_ERROR:
- return "保存目标文件失败";
- case TFE_OUTSIZE:
- return "提取的源文件超出设置的大小范围";
- case TFE_UNSUPPORTED:
- return "不支持的提取文件格式";
- case TFE_ERROR_INTERFACE:
- return "得到接口失败";
- case TFE_HTTP_ERR :
- return "HTTP下载文件失败";
- case TFE_HTTP_FILE_NULL :
- return "HTTP文件为空";
- case TFE_LICENCE_ERR:
- return "软件许可错误";
- default:
- return "未知错误2";
- }
- }
-
- private static final int REQUEST_INTERNET = 1;
- private static String[] PERMISSIONS_INTERNET = {
- "android.permission.INTERNET" };
- // 申请权限
- public static void verifyStoragePermissions(Activity activity) {
- try {
- //检测网络权限
- int permission = ActivityCompat.checkSelfPermission(activity,
- "android.permission.INTERNET");
- if (permission != PackageManager.PERMISSION_GRANTED) {
- // 没有权限,去申请
- ActivityCompat.requestPermissions(activity, PERMISSIONS_INTERNET,REQUEST_INTERNET);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- //
- GraccvsLib grlib = new GraccvsLib();
-
- //测试写文件
- private void testCreateFile() {
- try {
- File filesDir = getFilesDir();
- File txtFile = new File(filesDir,"test.txt");
- txtFile.createNewFile();
- txtFile.delete();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- //检测读写权限
- verifyStoragePermissions(this);
- //测试是否可以写文件
- testCreateFile();
- //当前应用的files文件夹
- File filesDir = getFilesDir();
- //初始化
- String tempPath = filesDir.getAbsolutePath() + "/";
- grlib.load(tempPath);
-
- String sn = "";
- // 企业版这里设置授权文本, 免费版都为空
- grlib.auth("graccvs--GayaSoftware", sn);
- TextView textView = findViewById(R.id.textView1);
-
- // ------------------------提取正文,返回字符串------------------------
- Button btTest1 = findViewById(R.id.btToString);
- btTest1.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //输入文件名称
- String fn = filesDir.getAbsolutePath() + "/Adobe Intro.ofd"; //"/graccvs文件正文提取接口.pdf";
- //提取文件正文
- String outText = grlib.toString(fn);
- textView.setText(outText);
- }
- });
-
- // ------------------------提取正文并保存为文本文件------------------------
- Button btTest2 = findViewById(R.id.btSaveToTextFile);
- btTest2.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //输入文件名称
- String infile = filesDir.getAbsolutePath() + "/简可信模板OCR识别工具帮助.docx";
- String outfile = filesDir.getAbsolutePath() + "/out.txt";
- //提取文件正文,保存到目标文件
- int r = grlib.toTextFile(infile, outfile);
-
- DllErrCode code = DllErrCode.values()[r];
- if (code != DllErrCode.TFE_OK)
- {
- // 得到错误方式1: 根据R值调用函数ErrText得到具体错误信息, 此方式速度快
- String err = codeText(code);
- textView.setText("error from code:" + err);
-
- // 方式2:调用DLL函数,得到具体错误信息, 此方式错误信息更加准确
- err = grlib.lastErr();
- textView.setText(textView.getText() + ", error from dll lastErr:" + err);
- }
- else
- {
- textView.setText("toTextFile function over");
- }
- }
- });
-
- // ------------------------HTTP提取正文,返回字符串------------------------
- Button btTest3 = findViewById(R.id.btHttpToString);
- btTest3.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //输入url
- String url = "https://www.gaya-soft.cn/dfs/v2/简可信模板OCR识别工具帮助.docx";
- //提取文件正文
- String outText = grlib.httpToString(url, ".docx", 180 * 1000, "");
- textView.setText(outText);
- }
- });
-
- // ------------------------HTTP提取正文并保存为文本文件------------------------
- Button btTest4 = findViewById(R.id.btHttpToTextFile);
- btTest4.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //textView.setText(grlib.wmi());
- //输入url
- String url = "https://www.gaya-soft.cn/dfs/v2/graccvs文件正文提取接口.pdf";
- String outfile = filesDir.getAbsolutePath() + "/out2.txt";
- String params = "{\"headers\":[{\"client_id\": \"g01x9\"}, {\"client_secret\": \"e23c89cc9fe\"}], \"cookies\":[{\"name\": \"ga\", \"value\": \"1020\", \"expires\":36000000, \"path\": \"/\"}]}";
-
- //提取文件正文
- int r = grlib.httpToTextFile(url, ".pdf", outfile, 0, params);
-
- DllErrCode code = DllErrCode.values()[r];
- if (code != DllErrCode.TFE_OK)
- {
- // 得到错误方式1: 根据R值调用函数ErrText得到具体错误信息, 此方式速度快
- String err = codeText(code);
- textView.setText("error from code:" + err);
- }
- else
- {
- textView.setText("httpToTextFile function over");
- }
- }
- });
- }
-
- @Override
- protected void onDestroy(){
- grlib.unload();
- super.onDestroy();
- }
- }
build.gradle
- //
- plugins {
- id 'com.android.application'
- }
-
- android {
- compileSdk 31
-
- defaultConfig {
- applicationId "tx.graccvslibtest"
- minSdk 27
- targetSdk 31
- versionCode 1
- versionName "1.0"
-
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
- }
-
- dependencies {
- implementation files('libs/graccvs.aar')
- implementation 'androidx.appcompat:appcompat:1.2.0'
- implementation 'com.google.android.material:material:1.3.0'
- implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.+'
- androidTestImplementation 'androidx.test.ext:junit:1.1.2'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
- }
测试效果:
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。