Android 没有从Tesseract OCR获得有效的结果,因为新OCR正在生成
我正在开发一个应用程序,我需要从图像中识别文本,还有什么比使用Tesseract更好的方法。因为Tesseract是一个开放源代码并且被广泛接受。我在我的应用程序中使用了Tesseract。所以,我从用户那里获取图像,然后对图像应用2-3个操作,以提高获得结果的机会,但我并没有得到预期的结果 Java代码->Android 没有从Tesseract OCR获得有效的结果,因为新OCR正在生成,android,opencv,ocr,tesseract,text-recognition,Android,Opencv,Ocr,Tesseract,Text Recognition,我正在开发一个应用程序,我需要从图像中识别文本,还有什么比使用Tesseract更好的方法。因为Tesseract是一个开放源代码并且被广泛接受。我在我的应用程序中使用了Tesseract。所以,我从用户那里获取图像,然后对图像应用2-3个操作,以提高获得结果的机会,但我并没有得到预期的结果 Java代码-> final Bitmap tessBitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), Bitmap.
final Bitmap tessBitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(tessBitmap);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
canvas.drawBitmap(image, 0, 0, paint);
Mat tessMat = new Mat();
Utils.bitmapToMat(tessBitmap, tessMat);
Imgproc.cvtColor(tessMat, tessMat, Imgproc.COLOR_RGB2GRAY);
Imgproc.threshold(tessMat, tessMat, 0, 255, Imgproc.THRESH_BINARY + Imgproc.THRESH_OTSU);
final Bitmap newTessBitmap = Bitmap.createBitmap(tessMat.width(), tessMat.height(), Bitmap.Config.RGB_565);
Utils.matToBitmap(tessMat, newTessBitmap);
final Bitmap finalTessBitmap = Bitmap.createBitmap(newTessBitmap.getWidth(), newTessBitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas tessCanvas = new Canvas(finalTessBitmap);
Paint tessPaint = new Paint();
tessPaint.setColor(Color.BLACK);
tessCanvas.drawBitmap(newTessBitmap, 0, 0, tessPaint);
然后将此位图传递给tesseract以获得输出,但效率不高,有时甚至无法在输出中获得任何内容。我已经将我的结果与一个在线网站进行了比较
正如它声称的那样,它还在后端使用tesseract。我也试图通过电子邮件与他们联系,但无法从他们那里得到任何信息
mTess = new TessBaseAPI();
tessModelPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + "/tesseract/";
mTess.init(tessModelPath, "eng", TessBaseAPI.OEM_TESSERACT_ONLY); mTess.setPageSegMode(TessBaseAPI.PageSegMode.PSM_AUTO);
mTess.setImage(finalTessBitmap);
这是基本的Tesseract代码。请帮我解决我的问题。谢谢
下面给出的是我在应用上述操作后得到的图像,但当我将其传递给tesseract时,我没有得到任何东西,但当传递到newocr.com网站时,它正在生成精确的文本
来自newOcr的结果
此图像用于显示结果
如果你有什么想法,请告诉我怎么办
在python代码中挖掘了更多并运行了相同的图像之后,我发现在python pytesseract中,它的工作方式类似于charm,并产生了与newocr一样的精确输出。但当我在安卓系统中运行时,它并没有那么好用。因此,Tesseract的API可能存在问题。现在,如果你还知道我可以做些什么来提高准确性。帮助我。提前谢谢
$ tesseract 8UIBw.jpg -
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 613
Tillamook
它没有任何预处理
$ tesseract -v
tesseract 4.0.0-253-g3948
leptonica-1.76.0 (Dec 14 2018, 15:34:47) [MSC v.1916 LIB Release x64]
libgif 5.1.4 : libjpeg 9b : libpng 1.6.35 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0
Found AVX
Found SSE
感谢您的回复@JimGrigoryan,我也对他们的结果感到惊讶,这就是为什么我给他们发邮件询问他们做了什么样的图像处理?但是什么也得不到。我知道有api可用,但我想离线实现。所以我只想知道如何提高结果。谢谢。我听不懂你想说什么,你能详细说明你的答案吗@USER898678这是对“如果你有任何想法,请建议我怎么做”和“我怀疑newocr是否像他们所说的那样使用Tesseract”的反应。-Tesseract版本4在没有任何预处理的情况下处理它。我在尝试用python运行时也观察到了同样的情况。现在我需要一些东西,可以优化库或一些图像处理,这将需要苔丝二产生准确的输出。