android - 如何填补7段字符每段之间的空白

标签 android ios image-processing ocr tesseract

我想使用 tesseract 库通过手机识别里程表中的数字。 源图片:

enter image description here

下一步:

enter image description here

现在我需要填补每个部分之间的空白。 你能帮我吗,我该怎么做? (英语训练数据比 https://github.com/arturaugusto/display_ocr 更适合我)

image processing: 

func prepareImage(sourceImage: UIImage) -> UIImage {
    let avgLuminanceThresholdFilter = GPUImageAverageLuminanceThresholdFilter()
    avgLuminanceThresholdFilter.thresholdMultiplier = 0.67

    let adaptiveThresholdFilter = GPUImageAdaptiveThresholdFilter()
    adaptiveThresholdFilter.blurRadiusInPixels = 0.67

    let unsharpMaskFilter = GPUImageUnsharpMaskFilter()
    unsharpMaskFilter.blurRadiusInPixels = 4.0

    let stillImageFilter = GPUImageAdaptiveThresholdFilter()
    stillImageFilter.blurRadiusInPixels = 1.0

    let contrastFilter = GPUImageContrastFilter()
    contrastFilter.contrast = 0.75

    let brightnessFilter = GPUImageBrightnessFilter()
    brightnessFilter.brightness = -0.25

    //unsharpen
    var processingImage = unsharpMaskFilter.imageByFilteringImage(sourceImage)

    processingImage = contrastFilter.imageByFilteringImage(processingImage)
    processingImage = brightnessFilter.imageByFilteringImage(processingImage)

    //convert to binary black/white pixels
    processingImage = avgLuminanceThresholdFilter.imageByFilteringImage(processingImage)

    return processingImage

  }

文字识别:

let tesseract_eng = G8Tesseract()
    tesseract_eng.language = "eng"
    tesseract_eng.engineMode = .TesseractOnly
    tesseract_eng.pageSegmentationMode = .Auto
    tesseract_eng.maximumRecognitionTime = 60.0
    tesseract_eng.setVariableValue("0123456789", forKey: "tessedit_char_whitelist")
    tesseract_eng.image = prepareImage(image)
    tesseract_eng.recognize()

最佳答案

OpenCV 有一些形态学方法,白色填充黑色像素之间的间隙(如 THISTHIS )。注意形态学开法,这应该是解决这个问题的主要方法,但如果这没有帮助,不要害怕将它与扩张结合起来。我不知道你用什么软件做图像处理,如果有类似的方法,试试看,否则我强烈建议你安装OpenCV,它(当然是免费的)有很多图像处理操作,速度非常快.此外,您可以尝试对阈值进行一些试验,并找到它切掉多少角和去除多少阴影之间的平衡(结合形态学操作,这应该可以为您解决问题)。

关于android - 如何填补7段字符每段之间的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36718379/

相关文章:

android - 无法在 Android Studio 中执行复制粘贴

objective-c - 为什么表格单元格不显示内容

ios - iOS 13 不再支持捕获 UITableView/ScrollView(包括屏幕外部分)的屏幕截图

opencv - 实时图像稳定

python - 使用递归插值计算平滑颜色图

android - 如何压缩图片大小?

java - DateFormat Android - 正确吗?

android - 将 onSaveInstanceState 与 backstack 中的 fragment 一起使用?

ios - 使用Unity3d中的更改更新xcode项目

matlab - 给定来自两个 View 的同一对象的两个图像。如何确定哪个是左 View ,哪个是右 View