来自身份证件检测的模糊文本和ocr

时间:2018-05-28 11:42:35

标签: python opencv tensorflow text ocr

我有一个非常具体的场景文本检测和解析问题。我甚至不确定你是否可以说它是一个真正的场景文本

我从身份证照片中提取了一个名字字段: enter image description here

我可以立即开始在该图像上应用一些OCR,但我相信可以应用进一步的文本本地化。要实现此图像:enter image description here 您是否知道任何此类文本定位算法?我已经尝试过Busta &#39; <#39; EAST by argman &#39;&#39; EAST他们工作得体。关于此特定任务的任何算法?

在文本本地化后,我认为现在是应用OCR的最佳时机。现在我感到迷茫。 您建议使用哪种OCR?我已经尝试过Tesseract&#39;但它只是运作不好。是否更好的想法是使用例如文件字符为文档字符制作自己的OCR。 Tensorflow吗

1 个答案:

答案 0 :(得分:1)

尝试增加图像的对比度。您可以使用:

import matplotlib.pyplot as plt
import cv2
import numpy as np


def cvt_BGR2RGB(img):
  return cv2.cvtColor(img,cv2.COLOR_BGR2RGB)


def contrast(img,show=False):
  # CLAHE (Contrast Limited Adaptive Histogram Equalization)
  clahe=cv2.createCLAHE(clipLimit=3., tileGridSize=(8,8))

  lab=cv2.cvtColor(img, cv2.COLOR_BGR2LAB)  # convert from BGR to LAB color space
  l,a,b=cv2.split(lab)  # split on 3 different channels

  l2=clahe.apply(l)  # apply CLAHE to the L-channel

  lab=cv2.merge((l2,a,b))  # merge channels
  img2=cv2.cvtColor(lab, cv2.COLOR_LAB2BGR)  # convert from LAB to BGR
  if show:
    #plot the original and contrasted image
    f=plt.figure(figsize=(15,15))
    ax1=f.add_subplot(121)
    img1_cvt=cvt_BGR2RGB(img)
    plt.imshow(img1_cvt)
    ax2=f.add_subplot(122)
    img2_cvt=cvt_BGR2RGB(img2)
    plt.imshow(img2_cvt)
    plt.show()
  return img,img2

然后你可以使用pyteserract