Распознование email с картинки

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
Подскажите пожалуйста, давно встречал на форуме у кого-то в статье, что он капмонстром распознавал текст на картинке, не могу найти эту статью
На картинках эмейл как распознать текст капмонстром? или может кто знает другой полезный в этой задаче инструмент?
 
Последнее редактирование:
  • Спасибо
Реакции: melutsk

melutsk

Client
Регистрация
03.08.2016
Сообщения
1 345
Благодарностей
1 256
Баллы
113

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
Сейчас опопробуем, спасибо!
 

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
Эх почти сработало, много где @ как e определяет в общем %20 распознает
anuakash87euahoo.com
 

Вложения

  • Спасибо
Реакции: melutsk

one

Client
Регистрация
22.09.2015
Сообщения
6 790
Благодарностей
1 264
Баллы
113
Собрать картинки, распознать в ручную и обучить собственный модуль.
 
  • Спасибо
Реакции: BPOH

one

Client
Регистрация
22.09.2015
Сообщения
6 790
Благодарностей
1 264
Баллы
113
  • Спасибо
Реакции: BPOH и melutsk

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
Обучить модуль получше надо. Думаю будет определять на 100%.
Как его обучить?) я тут рядом уже один 15 летний модуль заставил обрабатывать текст
Ато модуль уже ноет после 100 эмейлов *HAHA*
 

melutsk

Client
Регистрация
03.08.2016
Сообщения
1 345
Благодарностей
1 256
Баллы
113
Эх почти сработало, много где @ как e определяет в общем %20 распознает
anuakash87euahoo.com
Если это паблик домены, то можно проверку сделать и чтобы правило если что на глаз.
 
  • Спасибо
Реакции: BPOH

one

Client
Регистрация
22.09.2015
Сообщения
6 790
Благодарностей
1 264
Баллы
113
  • Спасибо
Реакции: BPOH

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
Если это паблик домены, то можно проверку сделать и чтобы правило если что на глаз.
Сильно сложно, даже приблизительно в голове структуры нет как это реализовать
Помотреть обучающее видео от Rostonixa для начала.
Буду благодарен за ссылку
 

DrunkDeath

Client
Регистрация
24.12.2014
Сообщения
566
Благодарностей
379
Баллы
63
Помню парсил сайт один, такая же ситуёвина была. Гадал через капмонстра. Всё отлично гадалось
 
  • Спасибо
Реакции: BPOH

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
Последнее редактирование:

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
На python через tesseract нашел пример но тоже не полностью распознает Zamatoffemail.ru

*HAHA* melutsk жэ и дал ссылку на модуль тесеракта, ато сравнил результат одинаковый прочитал название темы и точно...
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 433
Благодарностей
1 280
Баллы
113
Последнее редактирование:
  • Спасибо
Реакции: BPOH

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
Последнее редактирование:

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
Решил так: стакнул 1000 изображений в одно и загрузил на гугл диск открыл картинку как документ весь текст автоматически распознан
Подключаем 15 летний модуль *HAHA* через месяц у вас 400к эмейлов, вы прекрасны

python стаколка изображений:
from PIL import Image


def save_image(b):
    b1 = 0
    img = Image.new('RGB', (256, 20 * 1000))
    for i in range(1000):
        if b == 459412:
            img.save(f"out{b}.jpg")
            exit(0)
        img1 = Image.open(f'img\img{b}.jpg')
        img.paste(img1, (0, 0 + b1))
        print(f'img{b}.jpg')
        b +=1
        b1 += 20

    img.save(f"out{b}.jpg")

b = 1
for i in range(400):
    save_image(b)
    b += 1000
 
Последнее редактирование:
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 790
Благодарностей
1 264
Баллы
113

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
К стати опытным путем было выяснено, может будущим поколениям пригодится, не знаю с чем связано версия одна и таже и python и версия tesseract, в linux она распознает один и тотже набор текстов с дефолтной библиотекой на 30-40% больше.
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
В GSA captcha breyker - есть возможность побыренькому в разделе sdk подобрать фильтр для распознавания. Так как текст там скорее всего не сильно искажен, то можно это сделать быстро. И SDK модуль работает даже когда демо закончилось. Так что можно быстрее чем через месяц щелкнуть эту штуку.
 
  • Спасибо
Реакции: BPOH

Geograph

Client
Регистрация
16.02.2014
Сообщения
209
Благодарностей
113
Баллы
43
если шрифт не изменяется, то вполне можно сделать на C# - режете картинку на буквы и в массив загоняете 1 - есть цвет, 0 - нет цвета, потом сравниваете.
 
  • Спасибо
Реакции: BPOH

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
В GSA captcha breyker - есть возможность побыренькому в разделе sdk подобрать фильтр для распознавания. Так как текст там скорее всего не сильно искажен, то можно это сделать быстро. И SDK модуль работает даже когда демо закончилось. Так что можно быстрее чем через месяц щелкнуть эту штуку.
Попробовал за пол часа не разобрался, с фильтрами наигрался но с трудом пару букв угадал, архив с картинками прикреплю, может кто потренироваться надумает.
если шрифт не изменяется, то вполне можно сделать на C# - режете картинку на буквы и в массив загоняете 1 - есть цвет, 0 - нет цвета, потом сравниваете.
В шарпе к сожалению не силен
 

Вложения

  • 11,7 КБ Просмотры: 43

Geograph

Client
Регистрация
16.02.2014
Сообщения
209
Благодарностей
113
Баллы
43
C#:
public static string RecognizeEmail(Image image)
{
    var letters = new Dictionary<uint, string>
    {
        {1288792489, "" },
        {1626703122, "@"},
        {1769998881, "."},
        {1493272944, "_"},
        {3197976267, "-"},
        {3909147509, "a"},
        {376842207,  "b"},
        {1799116282, "c"},
        {2498030206, "d"},
        {2745527567, "e"},
        {3608642261, "f"},
        {3698512107, "g"},
        {285210550,  "h"},
        {2592223230, "i"},
        {3549459756, "j"},
        {2839448178, "k"},
        {2466444227, "l"},
        {1337034184, "m"},
        {1616237527, "n"},
        {2276519761, "o"},
        {1450716019, "p"},
        {1107090806, "r"},
        {3198435235, "s"},
        {3016806566, "t"},
        {4279155678, "u"},
        {2627837479, "v"},
        {3402494643, "x"},
        {1314130073, "y"},
        {3782604024, "z"},
        {2465172642, "L"},
        {1591944625, "M"},
        {2427343186, "0"},
        {1230207695, "1"},
        {3381667143, "2"},
        {3116171335, "3"},
        {1264925335, "4"},
        {2013810758, "5"},
        {4015866205, "6"},
        {448374844,  "7"},
        {3675590149, "8"},
        {2806702695, "9"},
    };

    var answer = "";
    var imgs = SplitImage(image, 9, 20);
    foreach (var img in imgs)
    {
        var crc32 = Crc32(img);
        if (letters.ContainsKey(crc32))       
            answer += letters[crc32];
        else
        {
            answer += "?";
            img.Save(crc32 + ".png", ImageFormat.Png);
        }
    }
    
    return answer;
}

public static Image[] SplitImage(Image image, int width, int height)
{
    var list = new List<Image>();
    using (Bitmap bmpImage = new Bitmap(image))
    {
        for (int x = 0; x < image.Width / width; x++)       
            for (int y = 0; y < image.Height / height; y++)           
                list.Add(bmpImage.Clone(new Rectangle(x * width, y * height, width, height), bmpImage.PixelFormat));
        return list.ToArray();
    }
}

public static uint Crc32(Image image)
{
    using (var m = new MemoryStream())
    {
        image.Save(m, ImageFormat.Bmp);
        var source = m.ToArray();
        var crc_table = new uint[256];
        uint crc;
        for (uint i = 0; i < 256; i++)
        {
            crc = i;
            for (uint j = 0; j < 8; j++) crc = (crc & 1) != 0 ? (crc >> 1) ^ 0xEDB88320 : crc >> 1;
            crc_table[i] = crc;
        }
        crc = 0xFFFFFFFF;
        foreach (byte s in source) crc = crc_table[(crc ^ s) & 0xFF] ^ (crc >> 8);
        crc ^= 0xFFFFFFFF;
        return crc;
    }
}

Вроде работает, рубит картинку на символы 9x20 пикселей, от каждой берёт Crc32-хэш и сравнивает с таблицей, не было букв "w" и "q" сам добавишь, если встретишь, еще иногда большие буквы встречаются и неправильные email'ы (с пробелами, без доменов)

image_2021-01-04_20-40-58.png
 
Последнее редактирование:
  • Спасибо
Реакции: BAZAg, Norim и BPOH

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
Спасибо огромное!
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)