几乎我活动中的所有内容都工作正常,除了TAG引用的地方.TAG得到一条红线说:'TAG' has private access in 'android.support.v4.app.FragmentActivity'.
MainActivity(无进口) -
public class MainActivity extends AppCompatActivity {
public static final String DATA_PATH = Environment
.getExternalStorageDirectory().toString() + "/MainActivity";
public static final String lang = "eng";
protected Button _button;
protected ImageView _image;
protected TextView _field;
protected String _path;
protected boolean _taken;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] paths = new String[] { DATA_PATH, DATA_PATH + "tessdata/" };
for (String path : paths) {
File dir = …Run Code Online (Sandbox Code Playgroud) 我想在android studio中导入tess-two库,并在编译后在ndk build中显示错误.我已经尝试在stackoverflow上给出解决方案.比如, 执行失败的任务':app:compileDebugNdk' 但它没有解决我的问题.请建议我在哪里做错了.
它显示以下错误:
Error:error: undefined reference to 'isnanf'
Error:error: undefined reference to '__isinff'
Error:error: undefined reference to 'isnanf'
[arm64-v8a] Install : libtess.so => libs/arm64-v8a/libtess.so
Error:error: undefined reference to 'isnanf'
Error:error: undefined reference to '__isinff'
Error:error: undefined reference to 'isnanf'
[x86_64] Install : libjpgt.so => libs/x86_64/libjpgt.so
Error:error: linker command failed with exit code 1 (use -v to see invocation)
Error:error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [obj/local/armeabi-v7a/libtess.so] Error 1
make: …Run Code Online (Sandbox Code Playgroud) 我的Android应用程序具有使用tess-two库的OCR功能.我在阅读包含"fi"的字符串时遇到此问题.在baseApi.getUTF8Text()之后,一个通过OCR获取识别文本的方法,返回的"fi"中的字符串 是 "fi" <<< - - - 非常关注该字符串.它不是一个2字符串的字符串,而是一个单字符串.您可以通过复制和粘贴来重现它.现在,我在想它可能是一个UTF8编码等问题,我对它没有足够的了解.当我尝试执行string.replace("fi","fi")时,Android Studio构建时带有erors 不可映射的字符,用于编码utf-8.我尝试在谷歌搜索,但它认为它是一个常规的"fi"而不是"fi".
有什么方法可以解决这个角色吗?
我正在开发一款需要OCR的Android应用.我决定使用Tesseract作为API,但我一直在收到此错误:
E/Tesseract(原生):无法使用language = eng初始化Tesseract API!
"eng.traineddata"到该位置.这是我正在使用的代码:
public void reads(View view) {
TextView textView = (TextView) findViewById(R.id.textView);
int rotation = 0;
try {
ExifInterface exifInterface = new ExifInterface(mCurrentPhotoPath);
int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,ExifInterface.ORIENTATION_NORMAL);
switch (orientation){
case ExifInterface.ORIENTATION_ROTATE_90: rotation = 90; break;
case ExifInterface.ORIENTATION_ROTATE_180: rotation = 180; break;
case ExifInterface.ORIENTATION_ROTATE_270: rotation = 270; break;
}
} catch(Exception e) {
}
int w = imageBitmap.getWidth();
int h = imageBitmap.getHeight();
if …Run Code Online (Sandbox Code Playgroud) 我试图从Android中的任何捕获图像中提取文本.所以我创建了一个Intent来访问相机并启动它startActivityForResult.
这是我的onActivityResult代码:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
Bundle extras = data.getExtras();
Bitmap bitmap = (Bitmap) extras.get("data");
TextView res = (TextView) findViewById(R.id.hello);
//imageView.setImageBitmap(imageBitmap);
//Image image = ImageIO.read(imageFile);
//BufferedImage buffimg = (BufferedImage) image;
//BufferedImage img = ImageHelper.convertImageToGrayscale(buffimg);
//ITesseract instance = new Tesseract(); // JNA Interface Mapping
//ITesseract instance = new Tesseract1(); // JNA Direct Mapping
//TessDataManager.initTessTrainedData(context);
if(isStoragePermissionGranted() == true) …Run Code Online (Sandbox Code Playgroud) 我一直在尝试将Tesseract库包含到我的Android项目中.
从我发现我做了以下:
1)从gooogle git下载tess-2,2)使用NDK构建3)将*.so文件(armeabi/v7,x86,mips)放入/ app/main/jniLibs /,4)打包*.so到.jar文件,将存档放入app/libs /并在gradle.build文件中写入dependency {}
我正在使用Android Studio,当我编写TessBaseAPI并按Alt + Enter - >"添加依赖于tess-two模块"时,它会自动写入导入行:
import com.googlecode.tesseract.android.TessBaseAPI;
但是当我尝试构建它时,我得到了
错误:包com.googlecode.tesseract.android不存在
我正在使用Android Studio 1.1
我正在使用流行的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列用空格分隔).
我的要求是在数字中有意义:能够分离和确定哪些数字属于哪个行和列.
谢谢,
我有一个Leptonica Pix对象返回
TessBaseApi.getThresholdedImage();
Run Code Online (Sandbox Code Playgroud)
现在,我怎么能将它转换为位图,以便我可以通过它显示它ImageView.
leptonica.android.Pix 至 android.graphics.Bitmap;
我没有找到查看API文件的转换方法.
有关将tess-two项目集成到Android Studio中的Android项目的答案,但许多已过时,并且没有使用此处定义的当前功能:
使用Android Studio 2.2及更高版本,您可以使用NDK将C和C++代码编译到本机库中,并使用IDE的集成构建系统Gradle将其打包到您的APK中.然后,您的Java代码可以通过Java Native Interface(JNI)调用本机库中的函数
tess-two使用Android Studio中的功能而不是外部文件放置,操作和命令行工具,将功能作为结果APK的一部分需要哪些具体步骤?因此,将构建,*.so文件创建到IDE中.具体而言仅使用Android Studio中的集成构建系统如所描述的(摇篮)这里.
1.开始一个新项目
2.将Tess-Two导入项目中
2B.添加任何所需的插件
3.在主活动中添加代码以获取本机功能
4.配置Android Studio构建,以便可以使用本机功能
这是需要具体细节的地方
java-native-interface android-ndk android-gradle-plugin tess-two android-studio-2.2
我已经在git下载页面中构建了项目步骤 https://github.com/rmtheis/tess-two#build 我已经在我的路径环境中安装了ndk/sdk,我也在项目本地添加了ndk路径.属性.这是我的项目构建日志,之后我将tess-two lib作为externel项目添加到我的
Information:Gradle tasks [clean, :app:compileDebugSources, :app:compileDebugAndroidTestSources, :tesstwo:compileDebugSources, :tesstwo:compileDebugAndroidTestSources]
:app:clean
:tesstwo:clean
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:tesstwo:compileLint
:tesstwo:copyReleaseLint UP-TO-DATE
:tesstwo:mergeReleaseProguardFiles UP-TO-DATE
:tesstwo:preBuild UP-TO-DATE
:tesstwo:preReleaseBuild UP-TO-DATE
:tesstwo:checkReleaseManifest
:tesstwo:prepareReleaseDependencies
:tesstwo:compileReleaseAidl
:tesstwo:compileReleaseRenderscript
:tesstwo:generateReleaseBuildConfig
:tesstwo:generateReleaseAssets UP-TO-DATE
:tesstwo:mergeReleaseAssets
:tesstwo:generateReleaseResValues UP-TO-DATE
:tesstwo:generateReleaseResources
:tesstwo:packageReleaseResources
:tesstwo:processReleaseManifest
:tesstwo:processReleaseResources
:tesstwo:generateReleaseSources
:tesstwo:processReleaseJavaRes UP-TO-DATE
:tesstwo:compileReleaseJava
:tesstwo:packageReleaseJar
:tesstwo:compileReleaseNdk
In file included from C:\Users\Julian\AndroidStudioProjects\Jtess\tesstwo\src\main\jni\com_googlecode_leptonica_android\box.cpp:17:0:
C:\Users\Julian\AndroidStudioProjects\Jtess\tesstwo\src\main\jni\com_googlecode_leptonica_android\common.h:22:24: fatal error: allheaders.h: No such file or directory
#include <allheaders.h>
^
compilation terminated.
make.exe: *** [C:\Users\Julian\AndroidStudioProjects\Jtess\tesstwo\build\intermediates\ndk\release\obj/local/arm64-v8a/objs/tesstwo/C_\Users\Julian\AndroidStudioProjects\Jtess\tesstwo\src\main\jni\com_googlecode_leptonica_android\box.o] Error 1
Error:Execution failed for task ':tesstwo:compileReleaseNdk'.
> com.android.ide.common.process.ProcessException: …Run Code Online (Sandbox Code Playgroud) 我试图为Android Studio构建tesseract ocr库,我使用了Internet上的tutorilas,其中包含一些可在cmd上运行的命令。但是,问题是我没有得到如何准确运行这些代码的方法,因为我已经在d驱动器中下载了ndk,那么它将如何在项目目录中使用命令。请任何人告诉我运行这些命令的步骤。最近三天以来,我经历了很多托托伊拉岛,但我仍然无法建造。我发现的命令是,git clone git://github.com/rmtheis/tess-两个tess cd tess cd tess-two ndk-build android更新项目--path。蚂蚁释放