Автор Тема: Image to text с Qt4  (Прочетена 3153 пъти)

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Image to text с Qt4
« -: Jan 18, 2012, 17:42 »
Здравейте приятели и за много години!

Въпросът ми е много симпъл:

Има ли (възможно най-лесен) начин, Qt4 приложение да прочете символи от картинка, като знам какъв шрифт са и неговата големина и ако да - поддържа ли се кирилица?

Благодаря предварително!
Активен

Kedr

  • Напреднали
  • *****
  • Публикации: 41
    • Профил
Re: Image to text с Qt4
« Отговор #1 -: Jan 18, 2012, 18:24 »
yum search OCR

libhocr-devel.i686 : Development files for libhocr
libhocr-devel.x86_64 : Development files for libhocr
libhocr-gtk.x86_64 : GTK+ application for libhocr
libhocr-python.x86_64 : Python bindings for libhocr
cuneiform.i686 : Command-line OCR system
cuneiform.x86_64 : Command-line OCR system
gocr.x86_64 : GNU Optical Character Recognition program
libhocr.i686 : A Hebrew optical character recognition library
libhocr.x86_64 : A Hebrew optical character recognition library
ocrad.x86_64 : An Optical Character Recognition program
openscada-docRU.x86_64 : Open SCADA documents
spamassassin-FuzzyOcr.noarch : Spamassassin plugin to identify image spam
tesseract.i686 : Raw OCR Engine
tesseract.x86_64 : Raw OCR Engine
yagf.x86_64 : Graphical front-end for cuneiform
Активен

borovaka

  • Напреднали
  • *****
  • Публикации: 1331
  • Distribution: Каквото дойде
  • Window Manager: Gnome / KDE
    • Профил
Re: Image to text с Qt4
« Отговор #2 -: Jan 18, 2012, 18:28 »
Дам трябва ти OCR и ти да си драснеш GUI на QT. Ето ти сравнение:
http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison
cuneiform се справя и с кирилица.
Активен

Та извода е прост: "Колкото по-големи ла*ната - толкова по-малка щетата! ... моралната де, не материалната"

Kedr

  • Напреднали
  • *****
  • Публикации: 41
    • Профил
Re: Image to text с Qt4
« Отговор #3 -: Jan 18, 2012, 18:30 »
Като имаш сканър, имаш и FineReader Sprint, нали? Той работи под wine.
Активен

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Re: Image to text с Qt4
« Отговор #4 -: Jan 18, 2012, 19:27 »
Така, виждам че няма директна функция (вградена в Qt4). Има ли друг вариант - ако имам сив фон и бял текст, то картинката да се уголеми със зададен от мен, процент и сивия фон да се замени с прозрачен, без белият текст да се маха?
Активен

borovaka

  • Напреднали
  • *****
  • Публикации: 1331
  • Distribution: Каквото дойде
  • Window Manager: Gnome / KDE
    • Профил
Re: Image to text с Qt4
« Отговор #5 -: Jan 19, 2012, 13:07 »
//offtopic
Абе приятелю ти OCR система ли искаш да си пишеш?
Каква да е тази функция в QT дето да го прави това ... това си трябва OCR система за целта.

//on
Иначе за фона си има достатъчно графични библиотеки които можеш да използваш. Аз на QT не съм писал ама ImageMagic и GD примерно могат да манипулират такива неща.
Активен

Та извода е прост: "Колкото по-големи ла*ната - толкова по-малка щетата! ... моралната де, не материалната"

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Re: Image to text с Qt4
« Отговор #6 -: Jan 19, 2012, 13:31 »
Не, няма да разработвам собствена OCR система, но тъй като текста не ми трябва за манипулации а за извеждане на дисплея, просто ме интересува как да го уголемя и най-вече да му заменя цвят - навсякъде където има сиво - да бъде прозрачно

Нещо от този род:
Код
GeSHi (C++):
  1. image.replace("gray", rgba(255,255,255,0))
Активен

Kedr

  • Напреднали
  • *****
  • Публикации: 41
    • Профил
Re: Image to text с Qt4
« Отговор #7 -: Jan 19, 2012, 15:25 »
convert source.gif -transparent "rgb(128,128,128)" target.gif
Активен

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Re: Image to text с Qt4
« Отговор #8 -: Jan 19, 2012, 15:55 »
Тъй като приложението ще е мултиплатформено, съответно няма ли функция в Qt?
Активен

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Re: Image to text с Qt4
« Отговор #9 -: Jan 19, 2012, 16:14 »
Отговорът е QImage - http://developer.qt.nokia.com/doc/qt-4.8/qimage.html
Имаш функция за скалиране на изобравението и достъп до картинката пиксел по пиксел.

Ако ще обработваш много картинки, бих ти препоръчал да ги пуснеш с QtConcurrent::map() ( http://developer.qt.nokia.com/doc/qt-4.8/qtconcurrent.html ), за да може UI-то ти да продължи да реагира.
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Re: Image to text с Qt4
« Отговор #10 -: Jan 19, 2012, 18:55 »
Код
GeSHi (C++):
  1. QImage tempImg("D:\\OCR\\bani4ka.png");
  2.  
  3.  
  4.    for (int i = 0; i < tempImg.height(); i++)
  5.    {
  6.    for (int j = 0; j < tempImg.width(); j++)
  7.    {
  8.    QRgb cur = tempImg.pixel(j, i);
  9.        QRgb delMin = qRgb(0,0,0);
  10.        QRgb delMax = qRgb(176,176, 176);
  11.        QColor transp;
  12.        transp.setRed(255);
  13.        transp.setBlue(255);
  14.        transp.setGreen(255);
  15.        transp.setAlpha(0);
  16.        //qDebug() << QColor(cur).red() << ", " << QColor(cur).green() << ", " << QColor(cur).blue();
  17.  
  18.       if(cur > delMin && cur < delMax)
  19.             tempImg.setPixel(j, i, Qt::transparent);
  20.    }
  21.    }
  22.    tempImg.save("D:\\OCR\\bani4ka2.png");
  23.    qDebug() << item->text();
Така написано би трябвало да премахва сивия фон и да оставя белите букви в изображението, но нещо не се получава. Някакви идеи?  ???
Активен

Kedr

  • Напреднали
  • *****
  • Публикации: 41
    • Профил
Re: Image to text с Qt4
« Отговор #11 -: Jan 19, 2012, 19:16 »
>"D:\\OCR\\bani4ka.png"

>D:

 ??? какво е това?
Активен

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Re: Image to text с Qt4
« Отговор #12 -: Jan 19, 2012, 20:07 »
#include <QtCore/QDebug>
#include <QtGui/QImage>
#include <QtGui/QColor>
#include <QtGui/QRgb>

bool colorcmp( const QColor & a, const QColor & b )
{
    return ( ( a.red() >= b.red() ) && ( a.green() >= b.green() ) && ( a.blue() >= b.blue() ) && ( a.alpha() >= b.alpha() ) );
}

int main(int argc, char *argv[])
{

    QImage tempImg("/home/nikolay/Development/Projects/OCR/banichka.png");

    const QColor delMin( 0, 0, 0 );
    const QColor delMax( 176, 176, 176 );

    for (int i = 0; i < tempImg.height(); i++)
    {
        for (int j = 0; j < tempImg.width(); j++)
        {
            QColor cur( tempImg.pixel(j, i) );

            if( colorcmp( cur, delMin ) && colorcmp( delMax, cur ))
                tempImg.setPixel(j, i, Qt::transparent);
        }
    }

    tempImg.save("/home/nikolay/Development/Projects/OCR/banichk2.png");
}

Това работи с картинка, която има сив фон QColor( 127, 127, 127, 255 ) и текст QColor( 255, 255, 255, 255 ). Ако има някакви по различни цветове от сиво,черно,бяло може да имаш проблем с функцията за сравнение.
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Re: Image to text с Qt4
« Отговор #13 -: Jan 19, 2012, 21:34 »
Пак същото. Ето това изображение не може да го "хване":


Активен

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Re: Image to text с Qt4
« Отговор #14 -: Jan 19, 2012, 22:19 »
Е тази е с доста близки цветове. Ако знаеш какви ще са цветовете, може да си ги направиш като входни параметри или ако си сигурен, че картинката винаги има само 2 цвята може да направиш така: Взимаш цвета на 0,0 пиксел и където има тоя цвят правиш прозрачност. В най-общият случай ти трябва изостряне на картинката. Да се повиши контраста на цветовете, за да има по-ясна граница между цвят и фон. Ако фона или буквите имат шум става вече доста по-весело и там ти трябва алгоритъм за разпознаване на текст.
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Настройка на text mode
Настройка на програми
sunhater 0 1826 Последна публикация Oct 29, 2003, 13:52
от sunhater
Text editor
Настройка на програми
MarineForce 7 3138 Последна публикация Mar 25, 2006, 08:34
от
Text-to-speecН
Настройка на програми
pythonica 7 2850 Последна публикация Jan 31, 2007, 11:04
от CTEHATA
Ubuntu 9.10 разлика между linux-image и linux-image-generic
Настройка на програми
ntenev 4 3314 Последна публикация Jan 16, 2010, 12:41
от ntenev
Kak да инсталирам Fedora 24 в Text more режим?
Настройка на програми
corleone1 32 6408 Последна публикация Oct 29, 2016, 09:49
от spec1a