picture_as_pdf
code
Python
verified
Бесплатная загрузка
devices
Кроссплатформенный
code Предпросмотр кода
Python#!/usr/bin/env python3
"""
Email Extractor for PDF Files
Supports digital PDFs and OCR for scanned documents
"""
import re
from pathlib import Path
try:
import pdfplumber
except ImportError:
pdfplumber = None
EMAIL_PATTERN = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
def extract_from_digital_pdf(pdf_path):
"""Extract emails from text-based PDF"""
if not pdfplumber:
raise ImportError("Install pdfplumber: pip install pdfplumber")
emails = set()
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
text = page.extract_text()
if text:
found = re.findall(EMAIL_PATTERN, text)
emails.update(e.lower() for e in found)
return sorted(emails)
def extract_with_ocr(pdf_path):
"""Extract emails from scanned PDF using OCR"""
try:
import pytesseract
from pdf2image import convert_from_path
except ImportError:
raise ImportError("Install: pip install pytesseract pdf2image")
emails = set()
images = convert_from_path(pdf_path)
for img in images:
text = pytesseract.image_to_string(img)
found = re.findall(EMAIL_PATTERN, text)
emails.update(e.lower() for e in found)
return sorted(emails)
def extract_emails(pdf_path, use_ocr=False):
"""Main extraction function"""
if use_ocr:
return extract_with_ocr(pdf_path)
return extract_from_digital_pdf(pdf_path)
def batch_extract(folder_path, use_ocr=False):
"""Extract emails from all PDFs in folder"""
all_emails = set()
folder = Path(folder_path)
for pdf_file in folder.glob('*.pdf'):
try:
emails = extract_emails(pdf_file, use_ocr)
all_emails.update(emails)
print(f"{pdf_file.name}: {len(emails)} emails")
except Exception as e:
print(f"{pdf_file.name}: Error - {e}")
return sorted(all_emails)
if __name__ == '__main__':
import sys
pdf_path = sys.argv[1]
use_ocr = '--ocr' in sys.argv
emails = extract_emails(pdf_path, use_ocr)
print(f"Found {len(emails)} unique emails")
for email in emails:
print(email)
info Об инструменте
PDF-экстрактор email разбирает PDF-файлы для поиска email-адресов. Поддерживает как цифровые PDF, так и отсканированные документы с возможностью OCR.
Ключевые особенности
- Цифровые PDF - Быстрое извлечение через pdfplumber (5-10 страниц/сек)
- Поддержка OCR - Tesseract OCR для отсканированных документов
- Многостраничность - Обрабатывает документы с 100+ страницами
- Обнаружение таблиц - Извлечение из сложных макетов
- Пакетная обработка - Обработка целых папок
- Поддержка паролей - Обработка зашифрованных PDF
Поддерживаемые типы PDF
- Текстовые PDF (экспорты Word, Excel)
- Отсканированные документы (с OCR)
- Визитки и счета
- Многоколоночные макеты
Требования
- Python 3.7+
- pdfplumber (
pip install pdfplumber) - Для OCR: pytesseract, pdf2image, движок Tesseract
Производительность: Цифровые PDF: 5-10 стр/сек. OCR: ~1 стр/сек. Точность: 85-95% для чётких сканов.
download Скачать скрипт
Нужна полная автоматизация?
Попробуйте Postigo для автоматизированных email-кампаний с AI-персонализацией
rocket_launch Start Free Trial