在android编程中使用tesseract

问题描述

我想为 TextRecogniization 创建一个应用程序。我添加了 tess-two 依赖项以使用 tesseract

build.gradle:

dependencies {
...
implementation 'com.rmtheis:tess-two:9.1.0'
...
}

MainActivity.kt:

import android.os.Bundle
import android.os.Environment
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.toBitmap
import com.googlecode.tesseract.android.TessBaseAPI
import java.io.File
import java.io.FileOutputStream


class MainActivity : AppCompatActivity() {
private lateinit var DATA_PATH:String

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    DATA_PATH=getExternalFilesDir(Environment.DIRECTORY_DCIM)?.path+File.separator
    val d=File(DATA_PATH+"tessdata")
    if (!d.exists()) d.mkdir()
    val assetFiles=assets.list("")
    for (fileName in assetFiles!!){
        val file=File(DATA_PATH+"tessdata"+File.separator+fileName)
        if (!file.exists()&&fileName.contains("traineddata")) {
            val oup = FileOutputStream(file)
            val asset_file = assets.open(fileName)
            var buffer= ByteArray(1024)
            var len =asset_file.read(buffer)
            while (len>0){
                oup.write(buffer,len)
                len =asset_file.read(buffer)
            }
            oup.flush()
            oup.close()
        }
    }

    val bitmap=ContextCompat.getDrawable(this,R.drawable.p2)!!.toBitmap()

    val tessBaseAPI=TessBaseAPI()
    val thread=Thread {
        tessBaseAPI.init(DATA_PATH,"fas")
        tessBaseAPI.setimage(bitmap)
        val text = tessBaseAPI.utF8Text
        Log.i("___",text)
    }
    thread.start()
}
}

资产中的训练数据文件

enter image description here

代码适用于英语。但对于波斯语结果并不好。例如测试图像是 p2.jpg:

enter image description here

图像的结果是:

enter image description here

我该如何解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)