Анкит Кхаре
Я уверен, что вы, как и я и миллионы других людей, тратили часы на копирование и вставку одной и той же информации в заявления о приеме на работу 🥱🎯.
В этом уроке мы расскажем, как создать мощный инструмент автоматизации, который автоматически извлекает ключевые данные из вашего резюме и заполняет заявки на вакансии в LinkedIn ! Благодаря LLM, должность «разработчик» теперь доступна практически каждому. Какое удивительное время! 🌍✨. Теперь вы можете использовать суперспособности LLM в области программирования в сочетании с функцией извлечения документов (ADE) от LandingAI, чтобы создать собственный интеллектуальный инструмент для автоматической подачи заявок. ADE с лёгкостью справляется даже с самыми сложными макетами резюме, избавляя вас от необходимости повторять заполнение форм и направляя энергию на то, что действительно важно: понимание требований к вакансии, адаптацию заявок и позиционирование себя как идеального кандидата 💪.
Давайте нырнем! 🚀
💡 Полный код руководства доступен на GitHub — следуйте инструкциям и запустите пример приложения самостоятельно 🧑💻.
Краткий обзор (что вы узнаете)
В этом уроке вы:
- Создайте приложение Django, которое анализирует PDF-файлы резюме с высокой точностью, используя извлечение документов Agentic (ADE) от LandingAI.
- Краткий обзор ADE и почему точность важна. Помните: если вы изначально не можете извлечь правильные данные из сложных макетов резюме, вы не сможете развивать его дальше.
- Создайте сценарий автоматизации с помощью Playwright и API Computer-Use от OpenAI для заполнения заявок на работу в LinkedIn
- Проведите мозговой штурм, чтобы еще больше расширить этот фундамент и построить
Проблема: время, потраченное впустую на повторяющиеся задачи
Типичный процесс подачи заявления о приеме на работу включает в себя многократный ввод одной и той же информации на разных платформах. Как энтузиасты ИИ, мы знаем, что именно с этой задачей он должен справляться. Автоматизируя рутинные этапы подачи заявления о приеме на работу, мы можем сосредоточиться на аспектах, требующих человеческого интеллекта и креативности. ИИ здесь, чтобы сделать нас не только продуктивнее, но и креативнее 🙂
Краткий обзор извлечения документов Agentic
API LandingAI Agentic Document Extraction (ADE) извлекает структурированные данные из визуально сложных документов (таблиц, диаграмм, полей форм и графиков) и возвращает иерархический JSON с точным расположением элементов.
Вы можете задаться вопросом: что в этом агентного и в чём новизна? Технологии распознавания документов существуют уже давно. Оптическое распознавание символов (OCR) существует уже несколько десятилетий, а мультимодальные LLM-программы недавно начали использоваться для извлечения документов. Но можно ли действительно доверять им в надёжном извлечении информации из документов? Каждый год триллионы долларов теряются из-за ошибок на последующих этапах обработки документов — ошибок, возникающих, в первую очередь, из-за неточного понимания и извлечения документов.
Именно поэтому мы в LandingAI усердно работали над решением этой проблемы, используя новый подход. Решение кроется в агентном методе извлечения данных, включающем визуальное мышление и детальную пространственную локализацию.
В контексте ADE « агентный » подход означает разбиение сложной задачи на более мелкие части и применение рассуждений для анализа и объединения этих компонентов для решения общей задачи. ADE использует именно эту стратегию для извлечения документов. Вместо пассивного чтения текста, ADE разбивает задачу извлечения на подзадачи, применяет рассуждения и собирает результаты для получения точного результата.
В отличие от традиционных методов OCR, ориентированных исключительно на извлечение текста, технология ADE изначально создавалась для интерпретации документов как визуального представления информации. Ведь макеты документов изначально разрабатывались для чтения людьми, а не для OCR-систем или LLM. Крупные мультимодальные модели часто испытывают трудности с детальной пространственной локализацией, необходимой для точного извлечения документов, особенно в таких сложных областях, как финансы, здравоохранение и т.д.
Если вам интересно узнать больше, вы можете ознакомиться с моей публикацией, в которой я сравниваю подходы на основе LLM+OCR с ADE.
Неверная информация снижает ваши и без того высокие шансы на получение звонков от рекрутеров. Именно поэтому точность извлечения данных здесь так важна. Теперь вы понимаете, почему было уместно кратко рассказать об ADE и подчеркнуть наше внимание к точности 😉.
Создание решения
Шаг 1: Понимание структуры проекта
Наше приложение имеет следующую организованную структуру:
job_application_automator/
├── пользователи/ # Аутентификация пользователей и управление профилями
│ ├── views.py # Пользовательские представления
│ ├── models.py # Пользовательские модели и пользовательская аутентификация
│ ├── forms.py # Формы для аутентификации и регистрации пользователей
│ ├── admin.py # Настройка интерфейса администратора
│ └── urls.py # URL-маршруты для пользовательского приложения
├── doc_parser/ # Анализ резюме и автоматизация LinkedIn
│ ├── views.py # Обрабатывает загрузку и анализ файлов
│ ├── models.py # Сохраняет проанализированные данные резюме
│ ├── utils.py # Вспомогательные функции (интеграция LandingAI и OpenAI)
│ ├── operator_script.py # Основной скрипт автоматизации для LinkedIn (Playwright + OpenAI)
│ ├── linkedin_script.py # Дополнительные утилиты автоматизации LinkedIn
│ └── urls.py # URL-маршруты для анализа резюме
└── templates/ # HTML-шаблоны для взаимодействия с пользователем
├── пользователи/ # Шаблоны, связанные с действиями пользователей (вход, регистрация)
└── resume_parser/ # Шаблоны, связанные с разбором и отображением резюме
Шаг 2: Анализ данных резюме с помощью библиотеки Python для извлечения документов LandingAI Agentic
Мы будем использовать библиотеку Python для извлечения документов LandingAI Agentic, чтобы преобразовать неструктурированные PDF-файлы резюме в структурированные данные:
pip install agentic-doc
Первоначальный код анализа в doc_parser/utils.py :
из agentic_doc
импорт json
импорт OpenAI
def extract_resume_data (file_path):
«»»
Анализ резюме и возврат структурированных данных
«»»
# Сначала используйте ADE от LandingAI для извлечения разметки
resume_markdown = parse(file_path)
# Затем улучшите с помощью GPT-4-turbo для структурированного JSON
клиент = openai.OpenAI(api_key=settings.OPENAI_API_KEY)
подсказка = f»»»
Преобразуйте эту разметку резюме в структурированный JSON:
{resume_markdown}
Формат JSON с полями: имя, адрес электронной почты, телефон, навыки, опыт, образование.
«»»
ответ = клиент.чат.завершения.создать(
модель = «gpt-4-turbo» ,
сообщения=[
{ «role»: «system», «content»: «Извлечь структурированные данные резюме из Markdown для использования на порталах вакансий и в базах данных.»},
{«role»: «user», «content» : prompt}
])
структурированные_данные = ответ.выбор[0].сообщение.контент.полоска()
structured_json = json.loads(structured_data)
вернуть структурированный_json
за исключением Исключение как e:
print( f»Ошибка анализа резюме: {e}»)
return None
Этот двухэтапный процесс гарантирует получение высокоструктурированных, надежных данных:
- ADE извлекает необработанное содержимое из PDF-файлов
- GPT-4-turbo преобразует разметку в чистый, структурированный JSON
Шаг 3: Создание автоматизации LinkedIn с использованием API Computer-Use от OpenAI
Основной компонент автоматизации в doc_parser/operator_script.py использует API Computer-Use от OpenAI для интеллектуального взаимодействия с браузером:
from playwright.sync_api import sync_playwright
импорт OpenAI
время импорта
из настроек импорта django.conf
класс LinkedInAutomator :
def __init__ (self):
self.client = openai.OpenAI(api_key=settings.OPENAI_API_KEY)
self.tools = [{ «тип» : «браузер» }]
def computer_use_loop (сам, браузер, страница, ответ):
«»»Обработка и выполнение команд автоматизации браузера из OpenAI»»»
в то время как response.choices[0].message.tool_calls:
для tool_call в response.choices[0].message.tool_calls:
# Выполнение команд браузера
если tool_call.function.name == «browser» :
# Обработка команд браузера…
проходить
# Получите дальнейшие шаги от OpenAI
ответ = self.client.chat.completions.create(
model= «computer-use-preview» ,
messages=[ # Включить историю разговоров ],
инструменты=self.инструменты
)
ответный ответ
def apply_to_job (self, job_url, resume_data, credentials):
«»»Автоматизируйте подачу заявок на работу в LinkedIn, используя проанализированные данные резюме»»»
с sync_playwright() в качестве p:
браузер = p.chromium.launch(headless= False )
страница = браузер.новая_страница()
# Войдите в LinkedIn, используя API OpenAI Computer-Use
login_prompt = f»»»
Перейдите на страницу входа в LinkedIn (
Введите адрес электронной почты: {credentials['email']}
Введите пароль: {credentials['password']}
Нажмите кнопку «Войти».
Дождитесь полной загрузки страницы.
«»»
ответ = self.client.chat.completions.create(
model= «computer-use-preview» ,
сообщения=[{ «роль» : «пользователь» , «контент» : приглашение_входа}],
инструменты=self.инструменты,
reasoning={ «generate_summary» : «concise» },
усечение = «авто»
)
ответ = self.computer_use_loop(браузер, страница, ответ)
# Перейдите к объявлению о вакансии и подайте заявку
apply_prompt = f»»»
Перейдите по URL-адресу этой вакансии: {job_url}
Найдите и нажмите кнопку «Простая подача заявки».
Заполните форму заявления, указав:
— Имя: {resume_data['name']}
— Электронная почта: {resume_data['email']}
— Телефон: {resume_data['phone']}
Если есть дополнительные поля для опыта или образования, заполните их.
При необходимости нажмите кнопку «Подать заявку» или «Продолжить».
«»»
ответ = self.client.chat.completions.create(
model= «computer-use-preview» ,
сообщения=[{ «роль» : «пользователь» , «контент» : apply_prompt}],
инструменты=self.инструменты,
reasoning={ «generate_summary» : «concise» },
усечение = «авто»
)
ответ = self.computer_use_loop(браузер, страница, ответ)
# Результаты процесса
браузер.закрыть()
return { «status» : «success» , «message» : «Заявка отправлена» }
Автоматизация взаимодействий LinkedIn (API использования компьютера)
Приложение использует модель OpenAI «использование компьютера-предварительный просмотр» для автоматического взаимодействия с LinkedIn:
- Автоматизация на основе естественного языка : просто предоставьте понятные инструкции для навигации по страницам, ввода учетных данных и отправки форм. API интерпретирует эти инструкции и взаимодействует с веб-браузером с помощью Playwright.
- Адаптивное взаимодействие : API может обрабатывать динамические элементы и неожиданные подсказки, с которыми традиционные скрипты автоматизации могут не справляться.
Реальная ценность: сосредоточьтесь на значимой работе
Эта структура автоматизации обрабатывает утомительную часть заявлений о приеме на работу, но это только начало. Реальная возможность состоит в том, чтобы использовать сэкономленное время, чтобы сосредоточиться на том, что ИИ не может делать так же хорошо: стратегическом позиционировании себя для каждой роли.
Сэкономив время за счет автоматизации, вы сможете разработать функции, которые:
- Извлекают ключевые требования из описаний вакансий
- Сравнивают их с вашими навыками и опытом
- Создают индивидуальные сопроводительные письма, подчеркивающие соответствующие достижения
- Предлагают изменения в резюме, чтобы подчеркнуть соответствие квалификациям
LinkedIn умен
В LinkedIn есть система обнаружения ботов, которая не позволит вам использовать компьютер для продолжения подачи заявок на работу, поэтому вам нужно будет выяснить, как с этим справиться (возможно, это следующие потенциальные шаги для дальнейшего развития?), но этот рабочий процесс должен хорошо работать со многими другими платформами подачи заявок на работу.
Расширение заявки: ваша креативность — это потолок
Эта структура автоматизации — только отправная точка. Как только вы построите основу, вы сможете сделать гораздо больше, чтобы сделать процесс подачи заявки на работу умнее, быстрее и персонализированнее.
Вот несколько идей, чтобы сделать это приложение еще лучше:
Генерация индивидуального сопроводительного письма: используйте извлеченное описание работы и данные резюме для создания индивидуальных сопроводительных писем, которые отражают язык и приоритеты каждой вакансии.
Умное сопоставление резюме и вакансий: автоматически сравнивайте свое резюме с описаниями вакансий и выделяйте наиболее релевантные навыки или пробелы. Вы даже можете получить рекомендации по корректировке резюме, чтобы оно лучше соответствовало каждой должности.
Это тот проект, где каждый дополнительный час, потраченный вами, окупается экономией десятков часов в будущем и, что более важно, приближает вас к возможностям, которые действительно вам подходят. Так что вперед — экспериментируйте, перерабатывайте и создавайте то, что вы хотели иметь, когда только начинали подавать заявки!
Заключение
.
Точное извлечение данных из документов — независимо от сложности макета и с сохранением ключевых визуальных элементов — позволяет нам надежно автоматизировать повторяющиеся и утомительные части заявлений о приеме на работу. Объединив эту возможность с передовыми API, такими как Computer-Use от OpenAI, мы создали мощную систему автоматизации, которая берет на себя рутинную работу, позволяя вам сосредоточиться на том, что действительно важно: выделиться как лучший кандидат.
Что дальше ?
- Исследуйте и развивайтесь дальше, используя Код для руководства доступен на GitHub
- Начните разработку с помощью библиотеки Python LandingAI Agentic Document Extraction.
- Прочитайте эти связанные записи в блоге: «Выход за рамки OCR+LLM: знакомство с Agentic Document Extraction», «Ускоренное понимание приложений с помощью Agentic Document Extraction от Landing AI».
- Общайтесь с нашим сообществом разработчиков на Discord.
Помните: самая ценная автоматизация — это не просто экономия вашего времени, а возможность инвестировать его в дела, которые действительно важны для вас!
Источник: landing.ai



























