[英]Tesseract returning gibberish when performing OCR on image
我正在尝试使用 Tesseract 读取图像,但它返回胡言乱语。 我知道我需要做一些预处理,但我在网上找到的似乎不适用于我的图像。 我尝试这个答案将图片从黑色背景/白色字母转换为白色背景/黑色字母,但没有成功。
这是图片。
还有我的简单代码:
from PIL import Image
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'D:\Tesseract-OCR\tesseract'
img = Image.open("2020-01-25_17-57-49_UTC.jpg")
print(pytesseract.image_to_string(img))
在 SO 上找到的修补代码
from PIL import Image
import PIL.ImageOps
import pytesseract
img = Image.open("8pjs0.jpg")
inverted_image = PIL.ImageOps.invert(img)
print(pytesseract.image_to_string(inverted_image))
给我
Dolar Hoy en Cucuta
25-Enero-20
01:00PM
78.048
VENTA
我认为您需要为重音字符提供某种语言包。
一个简单的 Otsu 阈值来获得二值图像,然后反转以获得黑色字母和白色背景似乎有效。 我们使用--psm 3
告诉 Pytesseract 执行自动页面分割。 查看Pytesseract OCR multiple config options以获取更多配置选项。 这是预处理后的图像
Pytesseract OCR 的结果
Dolar Hoy en Cucuta
25-Enero-20
01:00PM
78.048
VENTA
代码
import cv2
import numpy as np
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
# Load image, grayscale, threshold, invert
image = cv2.imread('1.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
result = 255 - thresh
# Perfrom OCR with Pytesseract
data = pytesseract.image_to_string(result, config='--psm 3')
print(data)
cv2.imshow('result', result)
cv2.waitKey()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.