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

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

Подход к решению этой же проблемы заключается в извлечении каждой строки с помощью OCR (библиотека pytesseract python) и нахождении ключевых слов внутри каждой строки. Предполагается, что ключевые слова будут иметь символ, т.е. после него будет стоять двоеточие (EXPIRES:, Effective:, License Number :). Примеры ключевых слов приведены ниже:

Номер ЛИЦЕНЗИИ
СРОК ДЕЙСТВИЯ
Срок действия
Действующий
Идентификационный номер
Дата выдачи
Дата истечения

Как только ключевое слово найдено в строке, на основе предположения, изложенного выше, оно отделяется и затем сохраняется в списке. Где первый элемент - это ключ, а второй элемент - это значение. Его также можно сохранить в хэше.

Функция Analyze выполняет всю работу по разделению строк с учетом сделанного предположения и отвечает за внесение их в список. Ниже приведен фрагмент кода.

def analyse(lines, keywords):
    slist = []
    i = 0
    while i < len(lines):
        word = re.split(":|-|~|#", lines[i])
        if isKeyWord(keywords, word[0]):
            if (isEmpty(word[1])):
                i += 1
                while (i < len(lines)):
                    flag = False
                    word[1] += " " + lines[i]
                    str = lines[i].split(", ")
                    for fu in str:
                        if (isPincode(fu)):
                            flag = True
                            break
                    if flag:
                        break
                    i += 1
            push(slist, word)
        i += 1
    return slist

Теперь запись для библиотеки SpaCy:

Прежде чем начать работу с pytesseract, вы использовали API Google Vision для получения текста из заданного изображения. В то время была сосредоточена концентрация на анализе текста. Искал готовую библиотеку. И нашел SpaCy очень полезным. Он поставляется с предварительно обученным обнаружением сущностей, и это потрясающе. В любом случае его можно настроить. Как его использовать, зависит от приложения или отдельного человека. Я бы предпочел написать отдельную статью, объясняющую возможности библиотеки SpaCy. А пока остановимся на текущей статье.

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

#line = 'License Number: 12345 Issued on: November 10, 2018 Expiry: November 10, 2028'
obj = spacy_lib.split_entity(line)
# obj = ['License Number: 12345', 'Issued on: November 10, 2018', 'Expiry: November 10, 2028']

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

Вывод:

В коде задействованы следующие части:

  • Извлеките текст из лицензионного сертификата с помощью pytesseract
  • Обработайте извлеченные данные, передав в SpaCy. Использование поддержки, предоставляемой библиотекой NLP (SpaCy).
  • Проанализируйте обработанные данные. И извлеките из сертификата необходимые ключевые слова.

Ссылка на GitHub для базы кода: https://github.com/shravanc/ocr_nlp