- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为我的路径做错了,但我不知道是什么。我正在 Nexus 7 上测试是否相关。在下面的示例中,我尝试将 tessdata 文件夹复制到 SD 卡,但它一直告诉我无法复制未找到的文件。我不太明白为什么。 (我将 tesseract 项目作为库,并将 tessdata 文件夹复制到 Assets 中)。感谢所有帮助,谢谢!
代码:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.app.Activity;
import android.content.Intent;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.media.ExifInterface;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.googlecode.tesseract.android.TessBaseAPI;
public class MainActivity extends Activity {
private static ImageView imageView;
// protected static Bitmap bit;
protected static Bitmap mImageBitmap;
// protected static String DATA_PATH;
public static final String STORAGE_PATH = Environment.getExternalStorageDirectory().toString() + "/rjb";
protected static String tesspath = STORAGE_PATH + "/tessdata";
protected static String savepath = null;
protected static String TAG = "OCR";
protected static String lang = "eng";
// main method
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// This is my image view for to show the image with
imageView = (ImageView) this.findViewById(R.id.imageView1);
// this is the take a photo button
Button photoButton = (Button) this.findViewById(R.id.button1);
//check if the rjb directory is there
//make it if its not
createmydir();
//if (!(new File(STORAGE_PATH + File.separator + "tessdata" + File.separator + lang + ".traineddata")).exists()) {
try {
AssetManager assetManager = this.getAssets();
//open the asset manager and open the traineddata path
InputStream in = assetManager.open("tessdata/eng.traineddata");
OutputStream out = new FileOutputStream(tesspath + "/eng.traineddata");
byte[] buf = new byte[8024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
} catch (IOException e) {
android.util.Log.e(TAG, "Was unable to copy " + lang
+ " traineddata " + e.toString());
android.util.Log.e(TAG, "IM PRINTING THE STACK TRACE");
e.printStackTrace();
}
//} else {
processImage(STORAGE_PATH + File.separator + "savedAndroid.jpg");
//}
photoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// CALL THE PICTURE (this works)
dispatchTakePictureIntent(0);
}
});
}
private void createmydir() {
File t = new File(STORAGE_PATH);
if(t.exists()) {
Toast.makeText(getApplicationContext(), "IM TOASTIN CAUSE IT EXISTS", Toast.LENGTH_LONG).show();
}
else {
t.mkdirs();
Toast.makeText(getApplicationContext(), "IM TOASTIN CUZ I MADE IT EXIST", Toast.LENGTH_LONG).show();
}
}
private void handleSmallCameraPhoto(Intent intent) {
Bundle extras = intent.getExtras();
mImageBitmap = (Bitmap) extras.get("data");
imageView.setImageBitmap(mImageBitmap);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;
saveImageAndroid(mImageBitmap);
Bitmap bitmap = BitmapFactory.decodeFile(savepath, options);
ExifInterface exif;
try {
exif = new ExifInterface(savepath);
int exifOrientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,ExifInterface.ORIENTATION_NORMAL);
int rotate = 0;
switch (exifOrientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
}
if (rotate != 0) {
int w = bitmap.getWidth();
int h = bitmap.getHeight();
// Setting pre rotate
Matrix mtx = new Matrix();
mtx.preRotate(rotate);
// Rotating Bitmap & convert to ARGB_8888, required by tess
bitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, false);
bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
}
// DATA_PATH = getDataPath();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
handleSmallCameraPhoto(data);
}
// write bitmap to storage
// saves it as savedandroid.jpg
// saves location in savepath
private void saveImageAndroid(final Bitmap passedBitmap) {
try {
savepath = STORAGE_PATH + File.separator + "savedAndroid.jpg";
FileOutputStream mFileOutStream = new FileOutputStream(savepath);
passedBitmap.compress(Bitmap.CompressFormat.JPEG, 100,mFileOutStream);
mFileOutStream.flush();
mFileOutStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private void dispatchTakePictureIntent(int actionCode) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePictureIntent, actionCode);
}
private void processImage(final String filePath) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
options.inPurgeable = true;
Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
if (bitmap != null) {
/*
* was for rotating but no longer needed int width =
* bitmap.getWidth(); int height = bitmap.getHeight(); Matrix matrix
* = new Matrix(); matrix.postRotate(rotation); bitmap =
* Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, false);
* bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
*/
TessBaseAPI baseApi = new TessBaseAPI();
baseApi.setDebug(true);
baseApi.init(STORAGE_PATH, "eng");
baseApi.setPageSegMode(100);
baseApi.setPageSegMode(7);
baseApi.setImage(bitmap);
String recognizedText = baseApi.getUTF8Text();
android.util.Log.i(TAG, "recognizedText: 1 " + recognizedText);
baseApi.end();
if (lang.equalsIgnoreCase("eng")) {
recognizedText = recognizedText
.replaceAll("[^a-zA-Z0-9]+", " ");
}
android.util.Log.i(TAG,
"recognizedText: 2 " + recognizedText.trim());
}
}
}
最佳答案
首先尝试将文件放在 SD 卡上,然后在像耳朵这样的简单图像上尝试简单的 ocr,如果有效,则通过程序复制语言文件,因为这样您可能会知道错误出在哪里。
关于java - Tesseract 无法将数据复制到 SD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16387566/
我正在尝试使用 tesseract 来识别图像中的字符。这个图像是通过从另一个图像中抓取字符并将它们放在新图像中的一行来创建的。问题是,当我将这张图片提供给 tesseract 时,它在输出中没有显示
使用创建聚类数据时 mftraining -F font_properties -U unicharset -O lan.unicharset *.tr 我收到以下消息 C:\Users\ \AppD
我是 tesseract 的新手,对 github 页面中的不同目录有点困惑。 tesserac-ocr 代码库是我安装的。在/usr/local/share/tessdata/中安装了一个 tess
我找不到详细的文档,也没有浏览源代码的感觉。例如,如果 Tesseract 引擎已经完成,我不想重做精明的边缘检测。 最佳答案 本文档提供了引擎的概述:https://github.com/tesse
我对 Tesseract OCR 完全陌生。这个问题可能很简单,但我似乎无法使用 Google 找到答案。 基本上,我有一个包含两部分的图像:第一部分位于图像的顶部,黑色背景和白色文本;第二部分位于图
我浏览了整个 Google 代码网站,但没有找到任何从 API 角度解释如何使用 Tesseract 的内容。有人知道在哪里可以找到这个吗? 最佳答案 最新文档现已发布 here 和 here 。 关
我可以通过命令行使用 tesseract 4.0 获得单词级别的置信度分数。有兴趣知道是否也有办法让角色自信。 对于单词级别的置信度,使用以下命令: tesseract [Image name] ou
TL;DR It appears that tesseract cannot recognize images consisting of a single digit. Is there a wor
所以我已经研究这个问题一段时间了,虽然其他人也有类似的问题,但对我来说没有任何作用: 我正在尝试将 pytesseract 用于项目,并将其安装在 User/Environments/testEnv/
我正在考虑使用 Tesseract 来处理 PDF 文件,因此我想使用该库而不是外部可执行文件。 我首先下载完整的 Tesseract 源代码并考虑构建它。遗憾的是,标准源没有任何方法可以在非 Lin
是否可以使用 Tesseract-OCR 获取已识别字符的字体,即它们是 Arial 还是 Times New Roman,无论是从命令行还是使用 API。 我正在扫描可能具有不同字体的不同部分的文档
我试图让 Tesseract(使用 Tess4J 包装器)仅匹配特定模式。该模式是连续四位数字,我认为是\d\d\d\d。这是我正在提供 tesseract 的图像的一个非常小子集(平面图受到限制
我不是 100% 确定 Java api 包 Tess4J 中 Tesseract 和 Tesseract1 对象的区别,任何人都可以解释一下吗? 我知道 Tesseract 使用接口(interfa
我正在测试 Hololens 中的一些功能。想知道是否可以在 Hololens 中使用任何对象检测/文本识别功能? 最佳答案 Hololens 1 本身不支持对象检测,您需要使用第三方代码。 Open
我正在尝试为 Tesseract 4.0 创建训练数据来识别屏幕截图中的图标(例如,评论,分享,保存)。这是示例屏幕截图: 我想微调 Tesseract 以实现如下输出: 喜欢147 评论 29 已保
我想知道Tesseract OCR使用的配置文件接受哪些参数,如何编写配置文件等 我在 their site 上找不到任何有关此内容的文档。如何确定支持哪些参数及其含义? 最佳答案 Tesseract
我正在尝试为 Tesseract 4.0 创建训练数据来识别屏幕截图中的图标(例如,评论,分享,保存)。这是示例屏幕截图: 我想微调 Tesseract 以实现如下输出: 喜欢147 评论 29 已保
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 此帖于11个月前编辑提交审核,
我正在尝试设置 tessedit_write_images但似乎做不到,我在任何地方都看不到 tessinput.tif 我正在做: import tesseract api = tesseract.
使用tesseract-ocr#3.02.02。 tesseract的基本用法是 tesseract sourc.png result 生成 和result.txt。要获取结果文本,我必须 cat 这
我是一名优秀的程序员,十分优秀!