繁体   English   中英

如何去除 opencv python 中的坏字符或特殊字符并提高 OCR 精度?

[英]How to remove bad characters or special character in opencv python and improve OCR accuracy?

我已经构建了一个程序,用于在 python 和 OCR 中提取图像中的文本,但是当我运行代码时,我得到了一些错误的字符,它的准确性不好,但它可以工作。 我可以添加一些关于应该处理的字符的数据集吗? 我该如何解决这些问题?

这是我的形象:

示例图像

这是代码:

import cv2
import numpy as np
import pytesseract

# Read input image, convert to grayscale
img = cv2.imread('9.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Remove shadows, cf. https://stackoverflow.com/a/44752405/11089932
dilated_img = cv2.dilate(gray, np.ones((7, 7), np.uint8))
bg_img = cv2.medianBlur(dilated_img, 21)
diff_img = 255 - cv2.absdiff(gray, bg_img)
norm_img = cv2.normalize(diff_img, None, alpha=0, beta=255,
                         norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8UC1)

# Threshold using Otsu's
work_img = cv2.threshold(norm_img, 0, 255, cv2.THRESH_OTSU)[1]

# Tesseract
custom_config = r'--oem 3 --psm 6'
text = pytesseract.image_to_string(work_img, config=custom_config)
print(text)

最后是 output:

fe
|Urine Analysis
| Urine analysis
| Color Yellow RBC/hpf 4-6
| Appereance Turbid WBC/hpf 2-3
; Specific Gravity 1014 Epithelial cells/Lpf 1-2
PH 7 Bacteria (Few)
| Protein Pos(+) Casts Pos(+)
Glucose Negative Mucous (Few)
Keton. Negative
Blood Pos(+)
Bilirubin Negative
' Urobilinogen Negative
| Nitrite Pos(+)

我有类似的 web。 我试图从图像中提取一些信息,但我也得到了其他原始文本。 因此,您可以尝试一种算法来仅提取所需的数据。

这是我的图像作为输入,就像你的一样输入图像

现在这个算法或代码只提取学生的 ID 或注册号。

Regs_No = list(new)
regs_no = []
count =0
Status = []
#Extracting Only Registration Number
for i in range(len(Regs_No)):
    if new[i][1:6] == "8MDSW":
       regs_no.append(new[i])
       Status.append('P')

所以上面的代码只是提取注册号。

在您的情况下,您还可以使用一些代码来仅获取所需的文本。 希望它有效。 谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM