Skip to content

Извлечение контактных данных из изображений визиток с помощью компьютерного зрения (OpenCV + Tesseract OCR). CLI-утилита для автоматизации ввода данных. В разработке: переход на веб-API.

License

Notifications You must be signed in to change notification settings

Nicemice13/contact-extractor

Repository files navigation

🗂️ Contact Extractor — Сервис извлечения контактных данных

Python 3.10+ OpenCV Tesseract OCR License: MIT

Backend-сервис для автоматического извлечения контактной информации из изображений с использованием компьютерного зрения


🎯 Проблема и решение

Бизнес-проблема: Ручной ввод контактных данных из изображений — трудоёмкий процесс, подверженный ошибкам и не масштабируемый при работе с большим количеством информации.

Техническое решение: Сервис автоматизирует полный цикл обработки:

  1. Приём изображения (JPG/PNG)
  2. Предварительная обработка для улучшения качества
  3. Распознавание текста через OCR-движок
  4. Структурирование данных (ФИО, компания, телефон, email)
  5. Сохранение в локальное хранилище контактов

⚙️ Технологический стек

# Ядро обработки
- OpenCV (cv2)      — предобработка изображений, улучшение контраста
- Tesseract OCRраспознавание текста (поддержка русского/английского)
- Pillow (PIL)      — работа с форматами изображений
- NumPyматематические операции с пикселями

# Хранение данных
- SQLiteлокальное хранилище структурированных контактов

# Интерфейс
- argparseCLI для автоматизации и интеграции в пайплайны

🚀 Быстрый старт
Установка зависимостей

# Создание виртуального окружения (рекомендуется)
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# Клонирование репозитория
git clone https://github.com/Nicemice13/contact-extractor.git
cd contact-extractor

# Установка библиотек
pip install -r requirements.txt

# Для Linux/macOS: установка Tesseract
sudo apt-get install tesseract-ocr  # Ubuntu/Debian
brew install tesseract              # macOS

# Для Windows: скачать установщик с официального сайта
# https://github.com/UB-Mannheim/tesseract/wiki

Запуск сервиса

# Обработка одного изображения
python main.py --image path/to/image.jpg

# Пакетная обработка из папки
python main.py --folder path/to/images_folder/

# Просмотр сохранённых контактов
python main.py --list-contacts


🖼️ Примеры работы
Входные данныеРезультат
## 🖼️ Пример работы системы
## 🖼️ Пример работы системы

Конвейер извлечения структурированных данных из изображения визитки:

| Шаг | Описание | Результат |
|-----|----------|-----------|
| **1. Исходное изображение** | Загрузка фото/скана визитки | 📷 ![Визитка Pappalporto](https://via.placeholder.com/300x150/ffffff/000000?text=Pappalporto+Visiting+Card) |
| **2. Предобработка** | Улучшение контраста, удаление шума, бинаризация | 🖼️ ![Обработанное изображение](https://via.placeholder.com/300x150/ffffff/000000?text=Processed+Image) |
| **3. Распознавание текста (OCR)** | Извлечение «сырого» текста | `PAPPALPORTO • Giorgia e Papà • Via del Porto, 37 - 61011 Gabicce Mare (PU) • 340.9891290 • pappalporto@gmail.com` |
| **4. Структурирование данных** | Парсинг в поля сущности | ```json
{
  "company": "PAPPALPORTO",
  "owners": "Giorgia e Papà",
  "address": "Via del Porto, 37 - 61011 Gabicce Mare (PU)",
  "phone": "340.9891290",
  "email": "pappalporto@gmail.com"
}
``` |

> 💡 **Примечание**:
> В реальном проекте:
> - Для итальянских номеров телефонов добавляется префикс `+39`
> - Адрес автоматически разбивается на компоненты (улица, индекс, город)
> - Поле `owners` может быть заменено на `contact_person` при наличии персональных данных

About

Извлечение контактных данных из изображений визиток с помощью компьютерного зрения (OpenCV + Tesseract OCR). CLI-утилита для автоматизации ввода данных. В разработке: переход на веб-API.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published