Извлечение названий месторождений¶
Модуль oilfield_utils.py отвечает за поиск названий месторождений в тексте документов. Названия месторождений определяются по ключевым словам, которые задаются в настройках программы.
Зачем нужен отдельный поиск¶
При обработке документов языковая модель Claude тоже может извлекать названия месторождений. Однако модель иногда допускает ошибки: указывает месторождение, которого нет в тексте, или путает похожие названия. Поэтому результаты Claude используются только как вспомогательные, а окончательным источником истины служит поиск по ключевым словам в распознанном тексте документа.
Такой подход гарантирует, что в итоговом результате окажутся только те месторождения, упоминания которых действительно присутствуют в тексте.
Настройка ключевых слов¶
Список месторождений и соответствующих им ключевых слов хранится в настройках программы (коллекция settings, поле oilfields). Каждая запись содержит:
name--- каноническое название месторождения (например,им. Ю.Корчагина);keywords--- список ключевых слов для поиска (например,["корчагин", "korchagin"]).
Достаточно одного совпавшего ключевого слова, чтобы месторождение считалось найденным.
Алгоритм поиска¶
Функция extract_oilfields_from_text принимает текст документа и список настроек месторождений. Поиск выполняется следующим образом:
- Текст документа приводится к нижнему регистру.
- Для каждого месторождения перебираются его ключевые слова.
- Каждое ключевое слово ищется в тексте с учётом границ слов: перед и после слова не должно быть буквы (кириллической или латинской). Это предотвращает ложные совпадения: например, ключевое слово
Волгане сработает на словеВолгоград. - Как только хотя бы одно ключевое слово найдено, каноническое название месторождения добавляется в результат. Остальные ключевые слова этого месторождения не проверяются.
Результат --- список канонических названий найденных месторождений (без повторов).
Постобработка документа¶
Функция run_postprocessing вызывается после распознавания документа через Claude и выполняет поиск месторождений в исходном тексте, полученном от сервиса оптического распознавания (Google Cloud Vision). Результаты записываются в поле from_postprocess.oilfields документа.
Постобработка выполняется всегда, независимо от того, нашёл ли что-то Claude. Если Claude указал месторождение, но оно не подтвердилось поиском по ключевым словам, результат Claude отбрасывается.
Пример¶
Настройки:
[
{"name": "им. Ю.Корчагина", "keywords": ["корчагин", "korchagin"]},
{"name": "Филановского", "keywords": ["филановск", "filanovsk"]}
]
Текст документа: устройство месторождения им.Ю.Корчагина (1 очередь)
Результат: ["им. Ю.Корчагина"]
Слово корчагин найдено в тексте (корчагина --- совпадение по границам слов, потому что после а нет буквы, а перед к стоит точка). Ключевые слова месторождения Филановского не найдены --- оно не включается в результат.