Мы все знаем, что объем данных растет беспрецедентным образом. К 2025 году IDC прогнозирует, что глобальный объем данных вырастет с 33 зеттабайт в 2018 году до 175 зеттабайт (зеттабайт равен триллиону гигабайт).

Насколько велик 175ZB?

Согласно документу IDC Эпоха данных 2025:

  • Если бы вы хранили 175 зеттабайт на DVD, вашей стопки DVD было бы достаточно, чтобы облететь Землю 222 раза.
  • Если вы попытаетесь загрузить 175 зеттабайт при средней текущей скорости интернет-соединения, вам потребуется 1,8 миллиарда лет для загрузки. Даже если вы заручитесь поддержкой каждого человека в мире для загрузки, это все равно займет 81 день.

Это огромный объем данных, и он будет только расти. Но знаете ли вы, что от 80% до 90% этих данных неструктурированы и растут на 55%-65% каждый год?

Неструктурированные данные трудно анализировать и, следовательно, трудно принимать решения. В результате многие бизнес-лидеры изо всех сил пытаются использовать ценность неструктурированных данных для лучшего принятия решений и повышения производительности. Эти неструктурированные данные часто называют «темными данными», поскольку они не представлены в структурированном машиночитаемом формате и поэтому не используются для других целей.

В этой статье мы рассмотрим, что означают структурированные и неструктурированные данные, и посмотрим, как мы можем использовать потенциальную ценность, которую могут содержать неструктурированные данные. Иногда может быть сложно разобраться в неструктурированных данных, но есть инструменты, которые могут помочь нам извлечь из них полезную информацию. Например, есть инструменты, которые могут брать изображения и превращать их в текст, который затем можно анализировать. Существуют даже бесплатные варианты с открытым исходным кодом, которые мы можем использовать для выполнения работы.

Итак, приступим!

Что такое структурированные данные? Чем они отличаются от неструктурированных данных?

Структурированный против неструктурированного

Структурированные данные обычно классифицируются как количественные данные, они хорошо организованы, помечены и машиночитаемы, что позволяет автоматически обрабатывать их, делая их доступными и понятными. Файлы Microsoft Office Excel являются примером структурированных данных, где данные обычно содержат как текст, так и числа и хранятся в структурированном виде, т. е. в формате «столбец-строка».

Однако с неструктурированными данными все наоборот; ее нелегко хранить в традиционной базе данных столбцов и строк или в электронной таблице, что затрудняет доступ, обработку и анализ. Некоторые примеры неструктурированных данных:

  • Сканированные документы счетов-фактур, квитанций, медицинских бланков, книг и т. д.,
  • Заметки врача
  • Изображений
  • Аудио и видео файлы
  • Стенограммы или записи колл-центра
  • Профили и посты в социальных сетях

Как мы можем извлечь ценность из неструктурированных данных?

Одним из способов извлечения ценности из неструктурированных данных является использование оптического распознавания символов (OCR). OCR — это форма компьютерного зрения, которая используется для извлечения текста из изображений и преобразования его в структурированный формат. Эта технология существует уже давно, но становится все более популярной из-за растущего объема неструктурированных данных.

Точно так же, как плитки Scrabble можно переставлять, чтобы сформировать ценные слова, OCR позволяет компаниям извлекать ценность из неструктурированных данных, преобразовывая их в структурированный формат. Используя OCR, организации могут эффективно классифицировать, классифицировать и анализировать неструктурированные документы и изображения, извлекая ценную информацию, которая может помочь им принимать более обоснованные решения.

Что мы можем сделать после извлечения текста из неструктурированных данных?

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

  • Здравоохранение. В сфере здравоохранения OCR можно использовать для оцифровки и систематизации больших объемов медицинских карт и информации о пациентах, обеспечивая более быстрый и эффективный доступ к критически важным данным.
  • Финансы и банковское дело: OCR может помочь финансовым учреждениям автоматизировать процесс извлечения данных из отсканированных документов, таких как счета, квитанции и банковские выписки. Это может сэкономить время и снизить риск ошибок.
  • Юридическая информация: OCR может помочь юридическим фирмам преобразовать отсканированные документы, такие как контракты и юридические заключения, в текстовые файлы с возможностью поиска и редактирования. Это может повысить эффективность юридических исследований и управления документами.
  • Розничная торговля. OCR можно использовать для извлечения данных из квитанций и счетов-фактур, что позволяет розничным торговцам автоматизировать процессы обработки кредиторской задолженности и лучше отслеживать свои финансовые данные.
  • Правительство: OCR может помочь государственным учреждениям автоматизировать процесс извлечения данных из форм, таких как налоговые декларации и заявления на льготы. Это может снизить нагрузку на государственных служащих и повысить точность сбора данных.
  • Производство. OCR можно использовать для извлечения данных из производственных документов и документов контроля качества, таких как отчеты об инспекциях и результаты испытаний. Это может помочь производителям отслеживать и анализировать производительность, выявлять проблемы и повышать качество.
  • Образование: OCR может помочь преподавателям в оцифровке и систематизации больших коллекций отсканированных документов, таких как учебники и учебные пособия. Это может облегчить учащимся доступ и поиск информации.

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

Как мы можем использовать OCR для извлечения текста из изображений?

Существует множество инструментов для извлечения текста из неструктурированных данных, как бесплатных, так и платных. Некоторые бесплатные популярные варианты включают Tesseract, EasyOCR и Keras-OCR. Существуют также платные облачные варианты, такие как Azure Form Recognizer, Amazon Textract и облачное зрение Google.

В этой статье мы рассмотрим Pytesseract — библиотеку Python с открытым исходным кодом, которая работает с механизмом Google Tesseract-OCR (один из самых точных механизмов распознавания).

Пример

Рассмотрим один из вариантов использования, описанных выше:

Финансы и банковское дело. OCR может помочь финансовым учреждениям автоматизировать процесс извлечения данных из отсканированных документов, таких как счета, квитанции и банковские выписки. Это может сэкономить время и снизить риск ошибок.

Для финансового учреждения важно уметь понимать и эффективно обрабатывать счета. В этом примере мы рассмотрим счет на французском языке, созданный Contoso, вымышленной компанией, используемой Microsoft. Мы оцифруем счет с помощью OCR, что позволит нам легко анализировать его содержимое.

ИСПОЛЬЗОВАНИЕ ПИТЕССЕРАКТА

# Tesseract Library
import pytesseract 
from pytesseract import Output

#Plotting Libraries
import matplotlib.pyplot as plt

# OpenCV Library
import cv2

Теперь мы читаем счет-фактуру, который хранится в виде файла png, и отображаем его.

# Then we display the results using this code.
plt.imshow(img)

Это образ, с которым мы работаем. Это счет-фактура для некоторых продуктов. Если у вас есть только один счет-фактура, извлечь информацию легко, но когда у вас есть сотни или тысячи счетов-фактур, это становится очень сложной задачей. Здесь мы будем использовать pytesseract, чтобы упростить извлечение информации.

Все, что мы делаем сейчас, это используем Pytesseract для получения полезной информации об обнаруженных словах. Мы можем сделать это, используя следующую строку кода:

# Detect words, boxes, confidences, line and page numbers in our document and return useful information regarding the detected words into a dictionary.
results = pytesseract.image_to_data(img_cv, output_type=Output.DICT)py

Этот блок кода напечатает значения в словаре с именем results, в том числе left, top, width, height, text и conf.

for i in range(0, len(results["text"])):
    print(f"Left Distance:{results['left'][i]}",
          f"Top Distance:{results['top'][i]}",
          f"Width:{results['width'][i]}",
          f"Height:{results['height'][i]}",
          f"Text:{results['text'][i]}",
          f"Conf:{results['conf'][i]}\n")

Среди данных, возвращенных pytesseract.image_to_data():

  • Термин text относится к обнаруженным словам.
  • Left — это расстояние от левого верхнего угла ограничивающей рамки до левой границы изображения.
  • Top — это расстояние от левого верхнего угла ограничивающей рамки до верхней границы изображения.
  • Width и Height — размеры ограничивающей рамки.
  • Conf — это уверенность модели в своем прогнозе для слова в ограничивающей рамке. Если Conf равно -1, это означает, что ограничивающая рамка содержит блок текста, а не одно слово.

Теперь мы можем нарисовать рамки вокруг обнаруженных текстов и визуализировать, насколько хорошо извлекается текст.

# Finally, we specify the confidence value that we want, here I will use the confidence_value = 70. 

confidence_value = 70

for i in range(0, len(results["text"])):
    x = results["left"][i]
    y = results["top"][i]
    
    w = results["width"][i]
    h = results["height"][i]    
    text = results["text"][i]
    conf = int(results["conf"][i])    
    
    if conf > confidence_value:
            
        print(f'Detected text: {text} (Probability: {conf:2.2f})')
            
        # Create a new 'text' string by filtering out non-ASCII characters and removing leading/trailing whitespace"
        text = "".join([c if ord(c) < 128 else "" for c in text]).strip()
        
        # Use the "cv2.rectangle()" function to draw a rectangle with a start point at the coordinates (x, y) and an end point at the coordinates (x+w, y+h). The color of the rectangle is specified as green (0, 255, 0) and the thickness of the line is set to 2.
        cv2.rectangle(img_cv, (x, y), (x + w, y + h), (0, 255, 0), 2)
        
        # Use the "cv2.putText()" function to draw the text stored in the "text" variable with the top-left corner at the coordinates (x, y-10) and the font used is "cv2.FONT_HERSHEY_SIMPLEX" with a size of 0.5. The text color is set to blue (0, 0, 200) and the thickness of the text is set to 2.
        cv2.putText(img_cv, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 200), 2)
        
plt.imshow(img_cv)

Вот и все! Вот так просто мы можем видеть тексты, извлеченные из изображения.

Чтобы сохранить текст, следующая строка кода преобразует обнаруженный текст в строку:

# Convert image to string
txt = pytesseract.image_to_string(file_name)

# Print text
print(txt)

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

# Install googletrans==3.1.0a0
!pip install googletrans==3.1.0a0

# Import the Translator class from the googletrans library.
from googletrans import Translator
import googletrans

# Translate the text from its source language (detected automatically) to English ('en')
translator = Translator()
translation = translator.translate(txt, dest='en', src='auto')

# Display the results
print(f"{translation.origin} ({translation.src})\n --> {translation.text} ({translation.dest})")

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

ЗАКЛЮЧЕНИЕ

Таким образом, OCR может помочь компаниям разобраться в неструктурированных данных, превратив их в структурированные данные. Это особенно полезно в таких отраслях, как здравоохранение, финансы, юриспруденция, розничная торговля и правительство, где есть много бумажных документов и изображений, которые необходимо оцифровать и систематизировать. По мере роста объема неструктурированных данных OCR, безусловно, становится ценным инструментом для улучшения принятия решений и повышения производительности.

Если вы собираетесь делать это в масштабе и с дополнительными преимуществами облака, то стоит обратить внимание на такие сервисы, как распознаватель форм. Распознаватель форм — это облачная служба, предоставляемая Microsoft Azure, которая использует расширенное машинное обучение для автоматического и точного извлечения текста, пар «ключ-значение», таблиц и структур из документов.