Рубрики
Без рубрики

Как сделать простой скрипт оптического распознавания символов.

Этот пост посвящен созданию простого OCR с помощью Microsoft computer vision API.

Автор оригинала: Akhand Pratap Mishra.

Оптическое распознавание символов-это распознавание набранного, рукописного или печатного текста и преобразование их в текст. OCR может быть использован для автоматизации различных задач с участием человека, например, в банковском деле OCR используется для обработки чеков без участия человека, генерации содержимого документов из их отсканированных изображений, он также может быть полезен для слабовидящих людей и т. Д. Для этого OCR мы будем использовать Microsoft Computer Vision API . Мы сделаем post-запрос для выполнения вызова API в python. и в ответ мы получим вывод в формате JSON. Для начала работы вам необходимо иметь учетную запись Microsoft, а после этого вы можете получить бесплатную подписку на computer vision API на 30 дней. Вы должны приобрести свой секретный ключ подписки, который выглядит примерно так 98f714r6vb2e193018b28fg1u9b3b0d7e7

#Defining base url for API call.
base_url = "https://westcentralus.api.cognitive.microsoft.com/vision/v1.0/"
ocr_url = base_url + "ocr"

#Defining subscription key and headers for subscription key.
sub = "98f714r6vb2e193018b28fg1u9b3b0d7e7"
headers  = {'Ocp-Apim-Subscription-Key': sub}

Microsoft OCR API довольно гибок, и мы можем определить множество параметров в зависимости от наших вариантов использования, здесь мы определяем два параметра: язык, который в нашем случае является английским (определяется “unk”), и то, следует ли определять ориентацию текста или нет, что в нашем случае определяется как true. Нам также нужен URL-адрес изображения, на котором мы хотим запустить наше распознавание (мы также можем загрузить локальное изображение для распознавания), поэтому мы определим URL-адрес изображения.

#Defining parameters and orientation
params   = {'language': 'unk', 'detectOrientation ': 'true'}

#Defining image url
img = "https://quotefancy.com/download/18846/original/wallpaper.jpg"
data = {'url': img}

Ниже приведено изображение по ссылке выше

Ниже приведено изображение по ссылке выше

Теперь мы импортируем requests для создания post-запроса с упоминанием ocr_url, заголовков, параметров и json.

import requests
response = requests.post(ocr_url, headers=headers, params=params, json=data)
response.raise_for_status()
analysis = response.json()
print analysis

Выходные данные JSON приведенного выше скрипта содержат данные о координатах ограничивающего прямоугольника, ориентации и угле текста для каждого слова строка за строкой. Вот результат

{  
   'language':'en',
   'orientation':'Up',
   'textAngle':0.0,
   'regions':[  
      {  
         'boundingBox':'689,768,2462,1049',
         'lines':[  
            {  
               'boundingBox':'689,768,2462,180',
               'words':[  
                  {  
                     'boundingBox':'689,768,541,158',
                     'text':'Work'
                  },
                  {  
                     'boundingBox':'1293,768,450,158',
                     'text':'hard'
                  },
                  {  
                     'boundingBox':'1816,768,158,156',
                     'text':'in'
                  },
                  {  
                     'boundingBox':'2041,768,771,180',
                     'text':'silence,'
                  },
                  {  
                     'boundingBox':'2889,768,262,158',
                     'text':'Let'
                  }
               ]
            },
            {  
               'boundingBox':'689,1037,2454,181',
               'words':[  
                  {  
                     'boundingBox':'689,1075,399,143',
                     'text':'your'
                  },
                  {  
                     'boundingBox':'1135,1074,722,103',
                     'text':'success'
                  },
                  {  
                     'boundingBox':'1918,1037,217,140',
                     'text':'be'
                  },
                  {  
                     'boundingBox':'2184,1075,399,143',
                     'text':'your'
                  },
                  {  
                     'boundingBox':'2638,1037,505,140',
                     'text':'noise.'
                  }
               ]
            },
            {  
               'boundingBox':'1717,1358,408,52',
               'words':[  
                  {  
                     'boundingBox':'1717,1359,173,51',
                     'text':'Frank'
                  },
                  {  
                     'boundingBox':'1913,1358,212,52',
                     'text':'Ocean'
                  }
               ]
            },
            {  
               'boundingBox':'1782,1765,276,52',
               'words':[  
                  {  
                     'boundingBox':'1782,1765,276,52',
                     'text':'@quoteßancu'
                  }
               ]
            }
         ]
      }
   ]
}

Наслаждайтесь!

P. S: На всякий случай, если вам понадобятся какие-либо разъяснения, оставьте комментарий.