pyTesseract not outputing text from image - python

maybe someone could help me! When I run the following code
import pytesseract
from pytesseract import image_to_string
from PIL import Image
import PIL
file = Image.open('/usr/local/Cellar/tesseract/4.1.0/share/tessdata/cap.png')
we_will = pytesseract.image_to_string(file)
print(we_will)
all that gets outputed is:
Process finished with exit code 0
which is no help. What am I doing wrong?

Sounds like we_will is the empty string. Try printing repr(we_will) to understand this idea more clearly.
IIRC, PyTesseract does this when it can't figure out what the text is inside the image. You can get the best results for a cropped image with a single-color background.

Related

pytesseract img to string conversion not working

I have this image and my code to convert it to string is:
import pytesseract
from PIL import Image
print(pytesseract.image_to_string(Image.open("screenshot.png")))
and my ouptut is nothing...
any suggestion?
The string conversion of an image might be very long... Depending on your editor, it may hide it

How can I convert a .ps file into a .png file?

I need to convert .ps files to .png files as part of an image recognition program I am making. I know I can use Ghostscript or other programs, but could someone give a specific example of how to write something like this:
def ps_to_png(ps_file):
file = ghostscript.read(ps_file)
png_file = ghostscript.save(file, "png")
return png_file
(This code is pseudo code- I want to know how to write something that actually does what this code looks like it will do.)
Thanks in advance! Stack is a great community and I appreciate it.
EDIT (Attempted solutions): When running this line:
os.system("ghostscript file.ps file.png")
I get the following Error:
'ghostscript' is not recognized as an internal or external command, operable program or batch file.
When attempting to use Pillow:
from PIL import Image
def convert_to_png(ps_file):
img = Image.open(ps_file)
img.save("img.png")
I get the following error:
OSError: Unable to locate Ghostscript on paths
You can use Pillow.
from PIL import Image
psimage=Image.open('myImage.ps')
psimage.save('myImage.png')
If you want to wrap it to a function:
from PIL import Image
def convert_to_png(path):
img = Image.open(path)
img.save("img.png")
path='/path_to_your_file'
convert_to_png(path)

cv2 to tesseract directly without saving

import pytesseract
from pdf2image import convert_from_path, convert_from_bytes
import cv2,numpy
def pil_to_cv2(image):
open_cv_image = numpy.array(image)
return open_cv_image[:, :, ::-1].copy()
path='OriginalsFile.pdf'
images = convert_from_path(path)
cv_h=[pil_to_cv2(i) for i in images]
img_header = cv_h[0][:160,:]
#print(pytesseract.image_to_string(Image.open('test.png'))) I only found this in tesseract docs
Hello, is there a way to read the img_header directly using pytesseract without saving it,
pytesseract docs
pytesseract.image_to_string() input format
As documentation explains pytesseract.image_to_string() needs a PIL image as input.
So you can convert your CV image into PIL one easily, like this:
from PIL import Image
... (your code)
print(pytesseract.image_to_string(Image.fromarray(img_header)))
if you really don't want to use PIL!
see:
https://github.com/madmaze/pytesseract/blob/master/src/pytesseract.py
pytesseract is an easy wrapper to run the tesseract command def run_and_get_output() line, you'll see that it saves your image into an temporary file, and then gives the address to the tesseract to run.
hence, you can do the same with opencv, just rewrite the pytesseract only .py file to do it with opencv, although; i don't see any performance improvements whatsoever.
The fromarray function allows you to load the PIL document into tesseract without saving the document to disk, but you should also ensure that you don`t send a list of pil images into tesseract. The convert_from_path function can generate a list of pil images if a pdf document contains multiple pages, therefore you need to send each page into tesseract individually.
import pytesseract
from pdf2image import convert_from_path
import cv2, numpy
def pil_to_cv2(image):
open_cv_image = numpy.array(image)
return open_cv_image[:, :, ::-1].copy()
doc = convert_from_path(path)
for page_number, page_data in enumerate(doc):
cv_h= pil_to_cv2(page_data)
img_header = cv_h[:160,:]
print(f"{page_number} - {pytesseract.image_to_string(Image.fromarray(img_header))}")

Extracting text/characters from Xray images using python

I am trying to extract the characters in the x-ray, I have tried using pytesseract to extract but couldn't succeed, I used a canny edge to remove the noise and extract, but still, I am not able to extract the text/chars. Can you please help/guide me to extract the text/chars
Try this tuotrial to locate the text:
https://www.pyimagesearch.com/2018/08/20/opencv-text-detection-east-text-detector/
Then once you locate you can isolate and use tesseract to recognize it.
If it's a DICOM file, you could use gdcm to get the attribute. It's available on python too.
pytesseract should be sufficient, if the file is in 'png' or 'jpg' form.
now suppose image is the name of your image. Please write the below code.
from PIL import Image
from pytesseract import image_to_string
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:/Program Files (x86)/Tesseract-OCR/tesseract.exe'
im = Image.open('F:/kush/invert.jpg')
pytesseract.image_to_string(im, lang = 'eng')

how to read this file using tesseract(python)?

how to read this png file using tesseract?
data:image/png;base64,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
Decoding Captcha isn't easy job, but maybe this example would be helpful.
In order to recognize text from Captcha you need more magic with cv2.
bfile='blablabla' #your base64 image
ffile=bfile.decode('base64')
pl=open('capcha.png','wb')
pl.write(ffile)
pl.close()
import pytesseract
from PIL import Image
img=Image.open('capcha.png')
text = pytesseract.image_to_string(img)
print (text)

Categories