为什么对于同一图像,tess-two 显示的结果与 windows(由 UB Mannheim 提供)的 tesseract 不同?

Why does tess-two show different result than tesseract for windows (by UB Mannheim) for the same image?

我正在使用 Tess-Two 为 Android 创建 OCR。我使用相同的图像进行转换,但结果与桌面版的 tesseract 大不相同。

tesseract桌面版效果更好

我在 Android 上使用以下行:

  val baseApi = TessBaseAPI()
  baseApi.init(dirPath, "eng")
  baseApi.setImage(mustOpen)
  val recognizedText = baseApi.utF8Text

在桌面上,我只使用这个简单的命令

tesseract image.png result

示例图像是:

this

使用 tesseract for Desktop 的图像输出是:

VEGETABLE OF, RIVET een Sra) SUGAR, EDIBLE

VEGETABLE OIL, INVERT SUGAR S' SUGAR, CITRIC
RAISING 503 (ii), BAKING }, SALT,
SOLIDS (0.6 % [ DL-ACETYL TARTARIC

ACID ESTERS OF ‘AND

并且,android 使用 tess-two 的输出是这样的:

'm mm W7 ' ' iii-E:
mmmmfiwgmb Ian»: came
a” ( om | mmmfiéu
mmormuguomws _

Won mm .. . . ml
mumm I'm‘n
( .

这是非常胡言乱语。请帮忙。

所以当我评论你的 post 并为我解决它时,我想我分享。

对我来说,第一个问题是需要对图像进行预处理以获得更好的效果。我正在使用 OpenCV 进行预处理。这里 https://android.jlelse.eu/a-beginners-guide-to-setting-up-opencv-android-library-on-android-studio-19794e220f3c 是如何设置它的一个很好的例子。

然后需要将图像转换为二值图像。对我来说,以下给出了最好的结果

Mat plateMat = Utils.loadResource(this,R.drawable.plate);
Mat gray = new Mat();
Imgproc.cvtColor(plateMat,gray,Imgproc.COLOR_BGR2GRAY);
Mat blur = new Mat();
Imgproc.GaussianBlur(gray,blur,new Size(3,3),0);
Mat thresh = new Mat();
Imgproc.adaptiveThreshold(blur,thresh,255, Imgproc.ADAPTIVE_THRESH_MEAN_C,Imgproc.THRESH_BINARY_INV,75,10);
Core.bitwise_not(thresh,thresh);
Bitmap bmp = Bitmap.createBitmap(thresh.width(),thresh.height(),Bitmap.Config.ARGB_8888);
Utils.matToBitmap(thresh,bmp);

然后我使用 eng+osd 语言调用 Tesseract(按此顺序),您可以在这里找到它们: https://github.com/tesseract-ocr/tessdata

然后通过使用 tesseract 我这样做:

TessBaseAPI tesseract = new TessBaseAPI();
tesseract.setDebug(true);
tesseract.init(getFilesDir().getAbsolutePath(),"eng+osd");
tesseract.setImage(bmp);
String utf8 = tesseract.getUTF8Text();

现在真正的交易

我最终得到不同结果的真正问题仅仅是因为在我的 Mac 上用 Homebrew 安装的 tesseract 版本是 4.1.0 而官方的 Tess-two 仓库仍然使用 3.05 通过深入研究 repos 问题,我发现 Tess 2 的开发人员拥有 Tesseract 4 的新版本,但它需要位于不同的 repo 中。是这里 https://github.com/adaptech-cz/Tesseract4Android

我克隆它并使用从项目中提取的aar,结果是一样的,我终于可以高枕无忧了!