我正在使用流行的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列用空格分隔).
我的要求是在数字中有意义:能够分离和确定哪些数字属于哪个行和列.
谢谢,
编写包含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
我已经搜索了一段时间关于如何获得最准确的设备方位角并想出了这个:
//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) 我正在使用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之前或之后添加。
谢谢,
我无法导入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库,我想隐藏/混淆库的源代码实现.
用户项目应用程序将使用该库的方式是:
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)
以及库的建议示例 - 没有发生任何事情,通过单击用户应用程序内的活动名称(当他导入它时) - 可以看到源代码.
谢谢,
我有多边形形状,我想将其转换为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?
我有简单的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)
Uid是相同的,因为它的应用程序特定的沙箱Pid:每个应用程序都是一个 ProcessonCreate一样Pid,因为它是UIThread为基于Linux和Android操作系统,我们知道,问题就Process实际上是Thread等等......而在Async中ThreadId是不同的,因为AsyncTask在不同的运行Thread而不是在UIThread 我正在努力理解的是Thread.currentThread().getId().我期望获得与Thread.currentThread().getId()相同执行环境相同的id .例如,因为 …
我有以下常规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) 流程是:
.txt文件但是.doc,我想.txt在重写的上面的步骤3中将他转换为常规文件.这是代码:
// 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) 简介:我在AS 1项目中有2个模型:
任务:我想混淆我的库项目,因为我想将它公开为公共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中,我正在使用他,原来的名字不存在.
谢谢,
我正在使用一些封闭的 Python 模块:我可以通过 API 调用方法,但无法访问实现。我知道这个模块基本上包含了一些 C++ 代码。
因此方法返回值类型之一是 a SwigPythonObject。假设我没有来自模块分发者或文档的任何其他帮助,我以后如何使用该对象?
我想以某种方式将他转换为“常规”python 对象,并在调试器中观察他的内部成员结构。
目前我在调试器中看到的是这样的:
{SwigPythonObject} _<hexa number>_p_unsigned_char
Run Code Online (Sandbox Code Playgroud) 我有使用上述命令在os-x UNIX上运行的bash脚本:
cp -avr source destination
结果是以下错误:
cp: the -R and -r options may not be specified together.
当我删除该a标志时,它可以正常运行而不会出错。
此错误的原因和含义是什么?
谢谢,