Невозможно извлечь текст из этих изображений - PullRequest
0 голосов
/ 13 января 2020

Я пытался обнаружить и извлечь текст из изображений ниже, но я не смог правильно получить текст заголовка.

Изображение 1:

enter image description here

Изображение 2:

enter image description here

Для таких изображений я не могу обнаружить и извлечь из него текст. Пожалуйста, помогите мне с этими изображениями.

Я попробовал следующий код:

import cv2
import pytesseract    
pytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"    
# Load image and threshold
image = cv2.imread(r"C:\Users\Admin\Downloads\Table_result\Table_result\semi train\Caffia 
coffee_before.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]

# Connect text with a horizontal shaped kernel
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (10, 3))
dilate = cv2.dilate(thresh, kernel, iterations=1)

# Remove non-text contours using aspect ratio filtering
cnts = cv2.findContours(dilate, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
    x, y, w, h = cv2.boundingRect(c)
    aspect = w / h
    if aspect < 3:
        cv2.drawContours(thresh, [c], -1, (0, 0, 0), -1)

# Invert image and OCR
result = 255 - thresh
data = pytesseract.image_to_string(result, config='-l eng --oem 2 --psm 6')
print(data)

Результат для моего кода: Для изображения 1:

FD Product Cust. Prod. Product Description Pack Size Qty Weight Unit Line 
Value V
Code Code Price
bl [SnR] o1 Each 1.00 £0.00 FX0]
ISR XA oY) Pack 10 | 1.00 [N £2.05
2350500 Chillies Green 1x500 gm| 1.00 £3.13 £3.13

Для изображения 2:

POR245 Caffia Alliance RFA FD Coffee 3 Pint Sachets (x 120) 30 61.40 
1,842.00 0.00

Для изображения 1 я получаю результат заголовка, но содержимое не было извлечено должным образом. Для изображения 2 раздел заголовка не будет извлечен, но данные содержания извлечены хорошо.

...