gpt4 book ai didi

Python - Pytesseract 从图像中提取不正确的文本

转载 作者:太空宇宙 更新时间:2023-11-03 22:20:48 24 4
gpt4 key购买 nike

我在 Python 中使用以下代码从图像中提取文本,

import cv2
import numpy as np
import pytesseract
from PIL import Image

# Path of working folder on Disk
src_path = "<dir path>"

def get_string(img_path):
# Read image with opencv
img = cv2.imread(img_path)

# Convert to gray
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Apply dilation and erosion to remove some noise
kernel = np.ones((1, 1), np.uint8)
img = cv2.dilate(img, kernel, iterations=1)
img = cv2.erode(img, kernel, iterations=1)

# Write image after removed noise
cv2.imwrite(src_path + "removed_noise.png", img)

# Apply threshold to get image with only black and white
#img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 31, 2)

# Write the image after apply opencv to do some ...

cv2.imwrite(src_path + "thres.png", img)

# Recognize text with tesseract for python
result = pytesseract.image_to_string(Image.open(img_path))#src_path+ "thres.png"))

# Remove template file
#os.remove(temp)

return result


print '--- Start recognize text from image ---'
print get_string(src_path + "test.jpg")

print "------ Done -------"

但输出不正确..输入文件是,

enter image description here

收到的输出是'0001'而不是'D001'

enter image description here

收到的输出是“3001”而不是“B001”

从图像中检索正确的字符所需的代码更改是什么,以及训练 pytesseract 为图像中的所有字体类型返回正确的字符[包括粗体字符]

最佳答案

@Maaaaa 指出了 Tessearact 文本识别错误的确切原因。

但是您仍然可以通过对 tesseract 输出应用一些后处理步骤来改进最终输出。如果有帮助,您可以考虑并使用以下几点:

  1. 尝试在 Tesseract 输入参数中禁用字典检查功能。
  2. 使用数据集中的启发式信息。从给定的样本图像中,我猜每个单词/序列的第一个字符是一个字母表,因此您可以根据您的数据集用最可能的字母表替换输出中的第一个数字,例如 '0' 可以用 D 代替 '0001' -> 'D001',其他情况也类似。
  3. Tesseract 还提供字符级识别置信度值,因此可以使用该信息将字符替换为具有最高置信度值的字符。

关于Python - Pytesseract 从图像中提取不正确的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49810566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com