小编mic*_*ael的帖子

Android OCR仅使用流行的tessercat fork tess-two检测数字

我正在使用流行的OCR tessercat fork for android tess-two https://github.com/rmtheis/tess-two.我整合了所有员工,它的工作原理......

但我需要只检测数字,我现在的代码是:

TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(pathToLngFile, langName);
baseApi.setImage(bitmap);
String recognizedText = baseApi.getUTF8Text();
baseApi.end();
doSomething(recognizedText); 
Run Code Online (Sandbox Code Playgroud)

从这里https://code.google.com/p/tesseract-ocr/wiki/FAQ#How_do_I_recognize_only_digits

我使用的是版本V3,并没有代码解决方案而是一些命令行解决方案 - 与android项目无关(我认为......).所以我尝试为版本<V3实现解决方案并添加以下行:

baseApi.SetVariable("tessedit_char_whitelist", "0123456789");
Run Code Online (Sandbox Code Playgroud)

我的问题是如何处理init()?我不需要任何语言,但仍需要init&aint init()方法...

编辑:更具体

我的最终目标是普通文档(不是纯Excel工作表),看起来像附图(标题和3列用空格分隔).

我的要求是在数字中有意义:能够分离和确定哪些数字属于哪个行和列. 在此输入图像描述

谢谢,

ocr android tesseract tess-two

5
推荐指数
2
解决办法
3190
查看次数

Java:使用ArrayList编写pojo的最有效方法

编写包含ArrayList的简单pojo类,在时间和内存消耗方面最正确和/或最有效的方法是什么?(关于引用的java机制,通过ref',赋值等):

public class MyClass {

    //1. Do we need to initialize here?
    public List<String> mList = new ArrayList<>();

    //2. Do we need to declare D. Constructor?
    public MyClass() {}

    //3. Need to initialize the list here or just pass?
    public MyClass(List<String> list) {
        this.mList = list;
    }

    //4. Better way for copy/assignment?
    public void setMlist(List<String> list) {
        this.mList = list;
    }

    public List<String> getMList() {
        return this.mList;
    }

}
Run Code Online (Sandbox Code Playgroud)

java memory-management reference arraylist pass-by-reference

5
推荐指数
1
解决办法
9081
查看次数

Android:获取准确的方位角

我已经搜索了一段时间关于如何获得最准确的设备方位角并想出了这个:

//Activity members
private SensorManager sensorManager;
private float mAzimuth = 0.0f;
private float[] mRotation = null;
private float rMat[] = new float[16];
private float orientation[] = new float[3];
//Later inside the Activity: Rotation Listener
SensorEventListener rotationListener = new SensorEventListener() {
    public void onAccuracyChanged(Sensor sensor, int accuracy) {}
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
            mRotation = event.values.clone();
            if (mRotation != null) {
                float RmatVector[] = new float[16];
                SensorManager.getRotationMatrixFromVector(RmatVector, mRotation);
                SensorManager.remapCoordinateSystem(RmatVector, SensorManager.AXIS_X, SensorManager.AXIS_Z, rMat); 
                SensorManager.getOrientation(rMat, orientation);
                mAzimuth = …
Run Code Online (Sandbox Code Playgroud)

android rotational-matrices android-sensors sensormanager

5
推荐指数
0
解决办法
3892
查看次数

Java XML - 删除节点后 - 空白行仍然存在 - 如何删除?

我正在使用javax.xml& 删除一些节点后:

docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilder = docBuilderFactory.newDocumentBuilder();
document = docBuilder.parse(new File("file_name"));
NodeList tagList = document.getElementsByTagName("tag_name");
tagList.item(0).getParentNode().removeChild(waysList.item(0));
Run Code Online (Sandbox Code Playgroud)

而不是删除的标签,我有一个空行。

如何避免这种情况或删除空行?

XML文件是:

<root>
    <tag_name>text</tag_name>
    <tag_name>text</tag_name>
    <tag_name>text</tag_name>
</root>
Run Code Online (Sandbox Code Playgroud)

编辑:如果我tagList.item(0).getParentNode().setTextContent("");removeChild得到 NullPointerException之前或之后添加。

谢谢,

java xml javax.xml

5
推荐指数
1
解决办法
3933
查看次数

Android无法导入RecyclerView和CardView

我无法导入RecyclerView和CardView,虽然它看起来非常简单.这是gradle.build脚本的相关部分:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "23.0.0"

    lintOptions {
        abortOnError false
    }

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 21
        versionCode 1
        versionName "1"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    sourceSets {
        main {
            java {
                srcDir 'src/main/java'
            }
            resources {
                srcDir 'src/../lib'
            }
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.1'
    compile 'com.android.support:cardview-v7:21.0.+'
    compile 'com.android.support:recyclerview-v7:21.0.+'
    compile 'com.google.android.gms:play-services:7.8.+'
}
Run Code Online (Sandbox Code Playgroud)

同步和构建任务正常执行,因此似乎实际下载了依赖项.在某些活动中,我尝试import android.support.v7.widget.RecyclerView;不承认包裹.

也许是SDK API版本问题?注意我需要最小11和目标最大22.

android android-gradle-plugin android-recyclerview

4
推荐指数
2
解决办法
2万
查看次数

Android ProGuard如何隐藏/混淆导出库的源代码

我正在开发Android库,我想隐藏/混淆库的源代码实现.

用户项目应用程序将使用该库的方式是:

startActivity( new Intent(context, LibraryActivityName.class) );
Run Code Online (Sandbox Code Playgroud)

所以我需要Activity在库项目中保留入口点的名称,这就是全部.

当我使用默认的ProGuard设置时:

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
Run Code Online (Sandbox Code Playgroud)

以及建议示例 - 没有发生任何事情,通过单击用户应用程序内的活动名称(当他导入它时) - 可以看到源代码.

谢谢,

android proguard android-proguard

4
推荐指数
1
解决办法
2669
查看次数

JTS:如何将多边形转换为MultiLineString

我有多边形形状,我想将其转换为MultiLineString.请注意,通常方向不同:使用GeometryFactory构建多边形从点,坐标,线等.我开始考虑GeometryTransformer,但很难理解那里的文档...所以我有这个:

import com.vividsolutions.jts.geom.*;
...
GeometryFactory gFactory = new GeometryFactory();
GeometryTransformer gTransform = new GeometryTransformer();
Polygon polygon = gFactory.createPolygon(someLinearRing, null);
MultiLineString mlString = polygon.TODO?
Run Code Online (Sandbox Code Playgroud)

如何继续TODO

java gis jts geotools

3
推荐指数
1
解决办法
1578
查看次数

Android:Process.myTid()VS Thread.currentThread().getId()

我有简单的Activity调用AsyncTask,所以我打印一些关于Proces和的ID Thread:

From onCreate android.os.Process.myUid(): 10137
From onCreate android.os.Process.myPid(): 29776
From onCreate android.os.Process.myTid(): 29776
From onCreate Thread.currentThread().getId(): 1
/****************************************************************/
From Async doInBackground android.os.Process.myUid(): 10137
From Async doInBackground android.os.Process.myPid(): 29776
From Async doInBackground android.os.Process.myTid(): 30426
From Async doInBackground Thread.currentThread().getId(): 12556
Run Code Online (Sandbox Code Playgroud)
  1. Uid是相同的,因为它的应用程序特定的沙箱
  2. 类似于Pid:每个应用程序都是一个 Process
  3. 在第3行onCreate一样Pid,因为它是UIThread为基于Linux和Android操作系统,我们知道,问题就Process实际上是Thread等等......而在AsyncThreadId是不同的,因为AsyncTask在不同的运行Thread而不是在UIThread

我正在努力理解的是Thread.currentThread().getId().我期望获得与Thread.currentThread().getId()相同执行环境相同的id .例如,因为 …

android android-asynctask

3
推荐指数
1
解决办法
1717
查看次数

Java XPath获取具有与特定文本匹配的特定标记的所有节点

我有以下常规XML文件:

<root>
    <Items>
        <Item>
            <tag1>text1</tag1>
            <tag2>text2</tag2>
            <tag3>text3</tag3>
        </Item>
        <Item>
            <tag1>text1</tag1>
            <tag2>text4</tag2>
            <tag3>text5</tag3>
        </Item>
    </Items>
</root>
Run Code Online (Sandbox Code Playgroud)

我希望得到文本等于的所有节点(全部<Item>),然后打印所有其他标签,例如.<tag1>text1<tag2>

我从这开始,但努力寻找TODO'S的答案:

try {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document doc = builder.parse(("\URI\file.xml"));
    XPathFactory xPathfactory = XPathFactory.newInstance();
    XPath xpath = xPathfactory.newXPath();
    //TODO: Is this correct query?
    XPathExpression expr = xpath.compile("//root//Items//Item//tag1[contains(., 'text1')]");
    NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
    for (int i=0; i<nl.getLength(); i++) {
        //TODO: How to iterate over all matched <Item> and get their <tag2>, …
Run Code Online (Sandbox Code Playgroud)

java xml xpath

3
推荐指数
1
解决办法
1120
查看次数

在Intent.ACTION_GET_CONTENT之后读取Android打开的文本文件

流程是:

  1. 用户需要选择要使用的文本文件和弹出的默认Android浏览器.
  2. 然后我想存储包含文件名的字符串,以实际打开文件进行读取.
  3. 我想打开该文件并将其重写为app内部存储上的新文件.
  4. 我想从app内部存储打开新创建的文件.
  5. 奖金1 - 如果它现在是.txt文件但是.doc,我想.txt在重写的上面的步骤3中将他转换为常规文件.
    奖金2 - 如何处理大型文本文件?

这是代码:

// 1. Start with user action pressing on button to select file
addButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("*/*");
        startActivityForResult(intent, PICKFILE_RESULT_CODE);          
    }
});

// 2. Come back here
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == PICKFILE_RESULT_CODE) {
        // Get the Uri of the selected file
        Uri uri = data.getData();
        String …
Run Code Online (Sandbox Code Playgroud)

storage android file internal

2
推荐指数
1
解决办法
4324
查看次数

Android ProGuard对库进行模糊处理:让类无法正常工作

简介:我在AS 1项目中有2个模型:

  1. 带有一些"公共API类"的Android库项目
  2. Android APP依赖于上面的库(库模块在依赖列表中)

任务:我想混淆我的库项目,因为我想将它公开为公共SDK,但保护我的代码...

我做了什么:所以我制定了自定义ProGuard规则:

-dontshrink
-dontoptimize
-dontpreverify
-keep class com.org.my_public_api_class_name
Run Code Online (Sandbox Code Playgroud)

我跳过所有其他阶段,以消除错误只在混淆阶段.

结果: APP模块的构建失败,出现错误

Error: cannot find symbol class my_public_api_class_name

对我来说,问题是混淆不会跳过我想要的类,所以现在他有一些毫无意义的名字,因此在APP中,我正在使用他,原来的名字不存在.

谢谢,

android proguard android-studio android-proguard

2
推荐指数
1
解决办法
4715
查看次数

Python:将 SwigPythonObject 转换为 Python 对象

我正在使用一些封闭的 Python 模块:我可以通过 API 调用方法,但无法访问实现。我知道这个模块基本上包含了一些 C++ 代码。

因此方法返回值类型之一是 a SwigPythonObject。假设我没有来自模块分发者或文档的任何其他帮助,我以后如何使用该对象?

我想以某种方式将他转换为“常规”python 对象,并在调试器中观察他的内部成员结构。

目前我在调试器中看到的是这样的:

{SwigPythonObject} _<hexa number>_p_unsigned_char
Run Code Online (Sandbox Code Playgroud)

python swig

1
推荐指数
1
解决办法
2527
查看次数

Unix终端错误-“ cp:-R和-r选项可能未一起指定。”

我有使用上述命令在os-x UNIX上运行的bash脚本:

cp -avr source destination

结果是以下错误:

cp: the -R and -r options may not be specified together.

当我删除该a标志时,它可以正常运行而不会出错。

此错误的原因和含义是什么?

谢谢,

unix linux terminal cp

-1
推荐指数
1
解决办法
457
查看次数