heg*_*ash 0 python python-tesseract
我已经阅读了关于pytesseract的帖子,但是我无法通过一个简单的图像读取文本.它返回一个空字符串.
这是图像:
我尝试过缩放,灰度化,调整对比度,阈值,模糊,以及其他帖子中说的所有内容,但我的问题是我不知道OCR想要更好地工作.它需要模糊的文字吗?高对比度?
代码尝试:
import pytesseract
from PIL import Image
print pytesseract.image_to_string(Image.open(IMAGE FILE))
Run Code Online (Sandbox Code Playgroud)
正如您在我的代码中看到的那样,图像存储在我的计算机本地 Image.open()
Mar*_*tin 15
有几个原因:
边缘不锋利且连续(锐利,我的意思是光滑,不是牙齿)
图像太小,需要调整大小
缺少字体(不是必需的,但训练有素的字体令人难以置信地提高识别的可能性
基于点1)和2)我能够识别文本.
1)我调整了图像的大小3x和2)我模糊了图像,使边缘平滑
import pytesseract
import cv2
import numpy as np
import urllib
import requests
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract'
from PIL import Image
def url_to_image(url):
resp = urllib.request.urlopen(url)
image = np.asarray(bytearray(resp.read()), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
return image
url = 'https://i.stack.imgur.com/J2ojU.png'
img = url_to_image(url)
retval, img = cv2.threshold(img,200,255, cv2.THRESH_BINARY)
img = cv2.resize(img,(0,0),fx=3,fy=3)
img = cv2.GaussianBlur(img,(11,11),0)
img = cv2.medianBlur(img,9)
cv2.imshow('asd',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
txt = pytesseract.image_to_string(img)
print('recognition:', txt)
>> recognition: Gm
Run Code Online (Sandbox Code Playgroud)
此脚本适用于测试Web上的任何图像
所有处理均基于您发布的图像
文本识别并不容易.每次认可都需要特殊处理.如果您使用不同的图像尝试此步骤,它可能根本不起作用.重要的是尝试对图像进行大量识别,以便了解tesseract想要的内容
Dav*_*cco 13
尝试一些类似的东西
import pytesseract
from PIL import Image
import requests
import io
response = requests.get('https://i.stack.imgur.com/J2ojU.png')
text = pytesseract.image_to_string(Image.open(io.BytesIO(response.content)), lang='eng',
config='--psm 7')
print(text)
Run Code Online (Sandbox Code Playgroud)
用--psm值等于或大于6没有屈服"GM"对我来说更大.
如果图像本地存储(和你的工作目录),只是下降的response变量和更改的定义text与线
image_name = "J2ojU.png" # or whatever appropriate
text = pytesseract.image_to_string(Image.open(image_name), lang='eng', config='--psm 7')
Run Code Online (Sandbox Code Playgroud)