Как правильно решить проблему «недопустимое использование неопределенного типа «struct Pixa»»?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как правильно решить проблему «недопустимое использование неопределенного типа «struct Pixa»»?

Сообщение Anonymous »

Я включил распознавание текста с помощью Leptonica и Tesseract capi.h в свой проект на C. Для обычных изображений, загруженных как Pix, все хорошо, но для многостраничных изображений TIFF, загруженных как Pixa, я получаю следующую ошибку компилятора:

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

ocr.c: In function ‘main’:
ocr.c:20:36: error: invalid use of undefined type ‘struct Pixa’
20 |     TessBaseAPISetImage2(api, image->pix[0]);
|
Это можно решить, включив , но мне это кажется обходным путем. Как это можно решить правильно?
Для справки, вот упрощенный код:

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

#include 
#include 
#include 
#include 
#include 

int main(int argc, char** argv) {
struct Pixa *image = pixaReadMultipageTiff("multi.tiff");

TessBaseAPI *api = TessBaseAPICreate();
TessBaseAPIInit3(api, NULL, "eng");

TessBaseAPISetImage2(api, image->pix[0]);
TessBaseAPIRecognize(api, NULL);
const char *text = TessBaseAPIGetUTF8Text(api);
puts(text);

TessDeleteText(text);
TessBaseAPIEnd(api);
TessBaseAPIDelete(api);
pixaDestroy(&image);

return EXIT_SUCCESS;
}
Я компилирую это так:

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

gcc -std=gnu23 -g -ggdb -Wall -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include ocr.c -ltesseract -lleptonica -o ocr
То же самое с C++ API baseapi.h дает:

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

ocr.c: In function ‘int main(int, char**)’:
ocr.c:23:24: error: invalid use of incomplete type ‘struct Pixa’
23 |     api->SetImage(image->pix[0]);
|                        ^~
In file included from ocr.c:10:
/usr/include/tesseract/baseapi.h:36:8: note: forward declaration of ‘struct Pixa’
36 | struct Pixa;
|        ^~~~
а также можно решить, включив .
Это касается Leptonica 1.84, Tesseract 5.5.0 и gcc/g++ 14.2.0 в Debian 13.

Подробнее здесь: https://stackoverflow.com/questions/798 ... truct-pixa
Ответить

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

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

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

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

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