Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Extracting particular text associated value from an image

Tags:

python

opencv

ocr

I have an image, and from the image I want to extract key and value pair details.

As an example, I want to extract the value of "MASTER-AIRWAYBILL NO:"

Image

I have written to extract the entire text from the image using python opencv and OCR, but I don't have any clue how to extract only the value for "MASTER-AIRWAYBILL NO:" from the entire result text of the image.

Please find the code:

import cv2
import numpy as np
import pytesseract
from PIL import Image
print ("Hello")
src_path = "C:\\Users\Venkatraman.R\Desktop\\alpha_bill.jpg"
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files (x86)\Tesseract-OCR\tesseract.exe"


print (src_path)


# Read image with opencv
img = cv2.imread(src_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(src_path + "thres.png"))


# Remove template file
#os.remove(temp)


print ('--- Start recognize text from image ---')
print (result)

So output should be like:

MASTER-AIRWAYBILL NO: 157-46637194

like image 657
venkat Avatar asked Feb 06 '19 18:02

venkat


People also ask

How can I scrape text from an image?

You can capture text from a scanned image, upload your image file from your computer, or take a screenshot on your desktop. Then simply right click on the image, and select Grab Text. The text from your scanned PDF can then be copied and pasted into other programs and applications.

How do I get text from an image in Python?

Python-tesseract is a wrapper for Google's Tesseract-OCR Engine which is used to recognize text from images. Download the tesseract executable file from this link. Approach: After the necessary imports, a sample image is read using the imread function of opencv.


Video Answer


1 Answers

You can use pytesseract image_to_string() and a regex to extract the desired text, i.e.:

from PIL import Image
import pytesseract, re
f = "ocr.jpg"
t = pytesseract.image_to_string(Image.open(f))
m = re.findall(r"MASTER-AIRWAYBILL NO: [\d—-]+", t)
if m:
    print(m[0])

Output:

MASTER-AIRWAYBILL NO: 157—46637194
like image 190
Pedro Lobito Avatar answered Oct 20 '22 13:10

Pedro Lobito