Улучшение обнаружения OCR с использованием tesseractC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Улучшение обнаружения OCR с использованием tesseract

Сообщение Anonymous »

Я работаю над проектом, где мне нужно обнаружить объекты в документе PDF.
После обнаружения объектов мне нужно прочитать текст в этом месте, поскольку он будет использоваться в качестве имени объекта. /> < /p>
Мне удалось обнаружить объекты, я использовал OpenCV для предварительного обработки изображения и хочу использовать Tesseract для чтения текста из изображения. Кроме того, я играл с разными режимами сегментации страниц, например, psm_single_word и psm_single_block. Первое изображение возвращает «t2, t3 \ n» с использованием psm_single_word (не используя psm_single_block, это возвращает «12,13 \ n»). Однако в большинстве случаев он не возвращает правильный текст. < /P>
предварительно обработанные изображения для справки:






Код: Выделить всё

1st:
Word:  "T2,T3\n"
Block:  "12,13\n"
Expected: “T2,T3\n”

2nd:
Word:  "T2,T3,TAR3\n"
Block:  "12,13, 1T AR3\n"
Expected: “T2,T3,TAR3\n”

3rd:
Word:  "TA8\n"
Block:  "TAR8\n"
Expected: “TAR8\n”

4th:
Word:  "T2TT\n"
Block:  "12,13,14,\nTAR35TAR4\n"
Expected: “T2,T3,T4,\nTAR3,TAR4”

5th:
Word:  "TTT2AA,RRT333A,,\n"
Block:  "12,13,\nTAR35\nTA34\n"
Expected: “T2,T3,\nTAR3,\nTAR34\n”

6th:
Word:  "T15\n"
Block:  "TAR15\n"
Expected: “TAR15\n”

7th:
Word:  "T\n"
Block:  "111\n"
Expected: “T11\n”
< /code>
Как вы можете видеть, иногда psm_single_word возвращает лучшие результаты, иногда делает psm_single_block, а иногда и ни один из них не возвращает правильный результат.  Проблема.Pix* pixImage = pixCreate(eroded.cols, eroded.rows, 8);
for (int y = 0; y < eroded.rows; y++) {
for (int x = 0; x < eroded.cols; x++) {
pixSetPixel(pixImage, x, y, eroded.at(y, x));
}
}

QString dataDir = qApp->applicationDirPath() + QStringLiteral("/tessdata");
QString d = QDir::toNativeSeparators(dataDir);

tesseract::TessBaseAPI tess;
QString result;

// First pass: PSM_SINGLE_WORD
if (tess.Init(d.toLatin1(), "eng", tesseract::OEM_DEFAULT) == 0) {
tess.SetPageSegMode(tesseract::PSM_SINGLE_WORD);
tess.SetVariable("tessedit_char_whitelist", "TAR0123456789, ");
tess.SetVariable("user_words_file", "wordList.txt");
tess.SetVariable("user_patterns_file", "patterns.txt");
tess.SetVariable("load_system_dawg", "0");
tess.SetVariable("load_freq_dawg", "0");
tess.SetVariable("wordrec_enable_assoc", "0");
tess.SetVariable("use_only_my_words", "1");
tess.SetImage(pixImage);

QString wordResult = QString::fromUtf8(tess.GetUTF8Text());
qDebug() 

Подробнее здесь: [url]https://stackoverflow.com/questions/79561683/improving-ocr-detection-using-tesseract[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Приложение Android OCR с использованием Tesseract
    Anonymous » » в форуме Android
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • FASTAPI с использованием Tesseract-OCR отлично работает в LocalHost Mac, но не на DigitaloCean Linux Server
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • FASTAPI с использованием Tesseract-OCR отлично работает в LocalHost Mac, но не на DigitaloCean Linux Server
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Приложение Android OCR с использованием tesseract
    Anonymous » » в форуме Android
    0 Ответы
    74 Просмотры
    Последнее сообщение Anonymous
  • Неверное обнаружение цифр с использованием tesseract ocr на видео кадрах в Python
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»