LINUX.ORG.RU

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

 , ,


2

2

Пишу грабер на Scrapy. Понадобилось распознавать телефоны в изображении. Большинство телефонов отлично распознаются с помощью Tesseract с помощью такого кода:

def parse_phone(self, response):
    # todo: добавить контракт
    phone = Image.open(StringIO(response.body))
    phone.load()
    image = Image.new("RGB", phone.size, (255, 255, 255))
    image.paste(phone, mask=phone.split()[3])  # 3 is the alpha channel
    image = image.resize((image.size[0] * 4, image.size[1] * 4), Image.BICUBIC)
    l = response.meta['loader']
    l.add_value('author_phone', tesseract.image_to_string(image, builder=tesseract.DigitBuilder()))
    return l.load_item()

Но есть такие, которые на которых Tesseract сильно гонит по причине слипшихся символов. Особенно часто этим страдает “4” и “-” (http://i.imgur.com/7DgTS0W.png). Мне же необходимо добиться 100% распознования номеров. Как посоветуете решать задачу, ребята?



Последнее исправление: cheerfulboy (всего исправлений: 3)

100% распознования номеров

Нанять живых операторов.
Иначе никаких 100% быть не может.

Goury ★★★★★
()

Очевидно надо преобразовать картинку чтобы цифры разлипли. Но вонючий спамер должен сам догадаться как.

anonymous
()
Ответ на: комментарий от buddhist

Почему же, я прислушался :) Просто с Pillow плохо дружу. Сейчас пишу алгоритм.

cheerfulboy
() автор топика
Ответ на: комментарий от cheerfulboy

Goury все верно сказал.

За доллар 1000 телефонов тебе распознают.

pi11 ★★★★★
()

Особенно часто этим страдает “4” и “-” (http://i.imgur.com/7DgTS0W.png)

У тебя там все символы одинаковые, так что, возможно, получится что-то набросать на opencv.

risenshnobel ★★★
()
  1. Tesseract по умолчанию был обучен распознавать скан текста с большим dpi (>300).
  2. Но его можно переобучить.
  3. Только не забывай обрезать входное изображение и подгонять его под одну высоту символов.
  4. Телефоны - это ограниченный набор символов. Как следствие, простые нейронные сети могут справиться с этой задачей вполне прилично. На Хабре были про это статьи.
  5. А научные статьи по этой тематике смотрел?
AlexVR ★★★★★
()

Мне же необходимо добиться 100% распознования номеров.

100% распознования не бывает, ибо кластеры в пространстве признаков могут пересекаться.

Как посоветуете решать задачу

В 2 этапа: предварительная сегментация, затем OCR в Linux.

P.S. Полезные книжки.

quickquest ★★★★★
()

это ведь не связано с авито ?

Dred ★★★★★
()

Так они, судя по картинке, одинакового размера? Тогда напрашивается решение в лоб - сегментировать на отдельные цифры и распознавать тем же Tesseract.

А если хочется взрослого секса, то смотри сюда:
http://yann.lecun.com/exdb/lenet/index.html

Bell
()

Пишу грабер на Scrapy....
необходимо добиться 100%

[yoda on] тебе не нужно добиваться 100% [yoda off] Ведь можно просто сделать реконнект.

А увеличить распознаваемость можно с помощью Imagemagick.

tesseract'y я помогал так:

    $captcha =~ s/[\r\n]//g;
    $captcha =~ tr/r/T/s;
    $captcha =~ tr/é/E/s;
    $captcha =~ tr/l/I/s;
    $captcha =~ tr/°/O/s;
    $captcha =  uc $captcha;
    $captcha =~ tr/1\\|/I/;
    $captcha =~ tr/50/SO/;
    $captcha =~ tr/ //ds;
    $captcha =~ tr/`//d;
    $captcha =~ tr/'//;
    $captcha =~ tr/‘/I/;
    $captcha =~ tr/)(/X/d;
    $captcha =~ tr/></X/d;
    $captcha =~ tr/¥/Y/;
    $captcha =~ tr/"//s;
    $captcha =~ tr/_//s;
В капче не цифры, конечно, а одни буквы. Но идея может помочь.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Какие нах нейронные сети. Картинка режется по строкам, строки пробелами и чертами на квадраты, полученные пазлы сравниваются с образцами которых не больше 1000. Все настолько однообразно, что универсальные ocr будут лажать

Но это если есть кому писать или есть чем платить.

anonymous
()

Всем спасибо за интересные мысли и за литературу. Проблему решил, разрезав изображение и склеив наново через один белый пиксель.

cheerfulboy
() автор топика
28 октября 2015 г.
Ответ на: комментарий от cheerfulboy

разрезав изображение и склеив наново через один белый пиксель

Эти пикселы лучше ресэмплить чем-нибудь типа hqx или super2xsai, а не бикьюбиком.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.