Создайте свой первый анализатор документов
Что такое правило синтаксического анализа?
Правило синтаксического анализа — это набор инструкций, которые сообщают нашим алгоритмам, какие данные вы ищете. Например, вы можете сообщить нашим алгоритмам, что хотите извлечь текст из определенного места в документе. Кроме того, вы можете добавить дополнительные инструкции к правилу синтаксического анализа, такие как форматирование даты, обрезка и изменение слов и т. д.
Правила синтаксического анализа бывают разных форм, и мы предлагаем множество шаблонов, которые помогут вам начать работу. Как правило, некоторые из ваших правил синтаксического анализа будут основаны на позиции, что означает, что мы будем извлекать ваши данные из фиксированной позиции в вашем документе. Другие правила синтаксического анализа будут извлекать данные из переменной позиции путем поиска маркеров ключевых слов в тексте документа или применения сопоставления с образцом.
Создает ли Docparser правила парсинга автоматически?
В зависимости от того, какой шаблон типа документа вы выбрали при создании парсера документов, Docparser уже автоматически создает для вас пару популярных правил парсинга. Например, при выборе «Счет-фактура» в качестве типа документа Docparser автоматически создает правила анализа, которые извлекают дату счета-фактуры, номер счета-фактуры и итоги (нетто, налог, перевозка, итог).
Для всех других полей данных, которые вы хотите извлечь, вам необходимо вручную создать новые правила синтаксического анализа.
Давайте будем до конца честными… создание правил синтаксического анализа — самая сложная часть в настройке Docparser, и этому нужно научиться. Но не волнуйтесь, мы готовы помочь, если вы где-то застряли и вам нужна помощь.
Сколько правил синтаксического анализа мне нужно создать?
Ответ на этот вопрос прост: обычно вы создаете одно правило разбора для каждого поля данных, которое хотите извлечь. Допустим, вы хотите извлечь поля Дата счета, Номер счета и Итоги счета. Это означает, что у вас есть три поля, которые вы хотите извлечь, и, таким образом, вы создадите три правила синтаксического анализа. И исключением из этого правила являются табличные данные. Наши инструменты извлечения таблиц позволяют извлечь всю таблицу с помощью одного единственного правила синтаксического анализа.
Как создать первое правило разбора?
Создание правила синтаксического анализа с нуля может занять от одной до нескольких минут в зависимости от сложности ваших данных. Чтобы ознакомиться с тем, как работает Docparser, мы рекомендуем создать первое простое правило синтаксического анализа, которое извлекает данные из определенной позиции в вашем документе. Все, что вам нужно сделать, это выбрать «Фиксированное положение текста» из представленных вам шаблонов правил синтаксического анализа.
На следующем экране вам будет предложено выбрать область, в которой находятся данные. Просто нарисуйте прямоугольник вокруг поля данных и подтвердите выбор в правом нижнем углу.
На финальном экране у вас есть возможность объединить несколько текстовых фильтров для обработки ваших данных. Этот шаг является необязательным, и вы можете сохранить правило синтаксического анализа без добавления каких-либо фильтров. В следующих статьях мы подробно расскажем, как вы можете использовать текстовые фильтры для дальнейшей обработки извлеченных данных, пока они не будут соответствовать именно тому формату, который вам нужен.
Вот оно! Вы только что создали свое первое правило синтаксического анализа, которое извлекает данные из фиксированной позиции. Это новое правило анализа будет использоваться для извлечения данных из всех импортированных документов в вашем анализаторе документов, существующих документов и новых.
Как вы, наверное, заметили, Docparser предоставляет множество различных шаблонов правил синтаксического анализа для всех видов вариантов использования. «Фиксированная позиция текста» — самый простой способ получить данные из фиксированной позиции. Другие шаблоны позволят вам извлекать таблицы, точки данных, расположенные в переменной позиции, и многое другое.
Хотите погрузиться в создание правила синтаксического анализа прямо сейчас? Ознакомьтесь со следующими статьями в нашей базе знаний:
- Разобрать текстовые данные с фиксированной позиции
- Разобрать данные таблицы
- Разобрать текстовые данные из переменной позиции
- Разобрать и отформатировать поле даты
Вы получили ответ на свой вопрос?
Спасибо за ответ Не удалось отправить отзыв. Пожалуйста, попробуйте позже.
python — правила грамматики для разбора необязательных ключевых слов из списка слов с помощью LALR
У меня есть строки со словами вроде этого:
- «Азбука и прочее» (обычно в начале идет короткая комбинация букв)
- «Еще кое-что» (иногда нет ничего интересного)
- «HFG 54 Еще кое-что и даже больше» (иногда встречается интересный номер)
- «HFG 54 ZZ Еще кое-что и даже больше» (иногда после номера стоит ZZ)
- «HFG-54 ZZ Еще кое-что и даже больше» (иногда стоит прочерк)
- «ZT ДРУГИЕ ВЕЩИ» (Остальное тоже можно писать с заглавной буквы)
- «(ZT) Еще что-то» (Часть может быть в скобках)
- «68 Еще кое-что» (Может быть только число)
- «Другие мелочи DFG» (можно в конце)
Я сделал некоторые правила для его анализа, и с larks Early-parser он работает нормально. Теперь я хочу попробовать это с помощью Lall-Parser, но тогда специальные слова не распознаются. Меня интересуют комбинации заглавных букв и цифры. У меня есть список возможных комбинаций букв. Цифры всегда двухзначные. Остальная часть строки может быть любой.
Я использую жаворонка. Это мой парсер:
от lark import Lark tryoutabc = Жаворонок(r""" начало: mat_all_and_restl ?mat_all_and_restl: мат_все остальные | отдых | рестл мат_бр отдых: ОТДЫХ* ?mat_all: mat_br| мат_номер| число mat_num: mat_br ("-")? ЧИСЛО ?num: ЧИСЛО ("ZZ")? ЧИСЛО: /\d{2}/ ?mat_br: "("?MAT")"? МАТ: «Азбука» | "ХФГ" | "ЗТ" | "ДФГ" ОТДЫХ: /([\-])?[A-Za-zÜ]+([\/.][A-Za-zÜ]+)?/ %import common.WS %игнорировать WS """, start='start', parser='larr') #remove "parser='larr'" и результаты правильные
Как мне изменить правила, чтобы синтаксический анализатор larr мог анализировать это?
Чтобы попробовать:
textl = ["ABC НЕСКОЛЬКО ДРУГИХ ВЕЩЕЙ", "Еще кое-что", "HFG 54 Еще кое-что и даже больше", "HFG 54 ZZ Еще что-то и даже больше", "HFG-54 Еще что-то и еще", "ZT Еще что-то", "(ZT) Еще кое-что", "Еще кое-что DFG", "Еще кое-что (DFG)", "68 Еще кое-что"] для текста в тексте: печать (tryoutabc.