Извлечь Lo go и текст из изображения визитной карточки с координатами - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть визитная карточка. Я хочу получить lo go и весь текст с визитной карточки с координатами. так что я могу сделать загруженное изображение редактируемым на HTML Canvas. Я видел так много примеров, но я не мог найти то, что я ищу. Я только нашел, чтобы получить текст из изображения. Я пытался с Google Vision API, но он также дает только текст. Я новичок в python.

Вот пример изображения.

enter image description here

В следующем коде я должен выбрать lo go для извлечения. Мне нужно, чтобы он автоматически находил и извлекал.

# import the necessary packages
import argparse
import cv2

# initialize the list of reference points and boolean indicating
# whether cropping is being performed or not
ref_point = []
cropping = False

def shape_selection(event, x, y, flags, param):
  # grab references to the global variables
  global ref_point, cropping

  # if the left mouse button was clicked, record the starting
  # (x, y) coordinates and indicate that cropping is being
  # performed
  if event == cv2.EVENT_LBUTTONDOWN:
    ref_point = [(x, y)]
    cropping = True

  # check to see if the left mouse button was released
  elif event == cv2.EVENT_LBUTTONUP:
    # record the ending (x, y) coordinates and indicate that
    # the cropping operation is finished
    ref_point.append((x, y))
    cropping = False

    # draw a rectangle around the region of interest
    cv2.rectangle(image, ref_point[0], ref_point[1], (0, 255, 0), 2)
    cv2.imshow("image", image)

# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True, help="Path to the image")
args = vars(ap.parse_args())

# load the image, clone it, and setup the mouse callback function
image = cv2.imread(args["image"])
clone = image.copy()
cv2.namedWindow("image")
cv2.setMouseCallback("image", shape_selection)

# keep looping until the 'q' key is pressed
while True:
  # display the image and wait for a keypress
  cv2.imshow("image", image)
  key = cv2.waitKey(1) & 0xFF

  # if the 'r' key is pressed, reset the cropping region
  if key == ord("r"):
    image = clone.copy()

  # if the 'c' key is pressed, break from the loop
  elif key == ord("c"):
    break

# if there are two reference points, then crop the region of interest
# from teh image and display it
if len(ref_point) == 2:
  crop_img = clone[ref_point[0][1]:ref_point[1][1], ref_point[0][0]:ref_point[1][0]]
  cv2.imshow("crop_img", crop_img)
  cv2.waitKey(0)

# close all open windows
cv2.destroyAllWindows()

1 Ответ

0 голосов
/ 02 мая 2020

Вы можете попробовать облачный API ABBYY:

https://www.abbyy.com/en-gb/cloud-ocr-sdk/features/

API предоставит вам весь текст с координатами и вы сможете получить изображение обратно элементы - насколько можно обнаружить - как чистые изображения тоже. С некоторыми логиками c вы можете собрать это вместе, чтобы получить документы, включающие все текстовые элементы в виде реального текста и все изображения в виде изображений в правильных положениях.

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

https://www.ocrsdk.com/documentation/specifications/export-formats/

API действительно хорош и дает вам результаты распознавания, которые очень сопоставимы с облачным видением Google. И у вас есть больше возможностей и параметров для настройки результатов. Но API ABBYY намного дороже, чем API Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...