Tesseract v3.03 рендеринг PDF с возможностью поиска текста

Из примечания о выпуске tesseract v3.03 tesseract теперь поддерживает вывод PDF-файла с текстом, доступным для поиска, но я не знаю, как использовать эту функцию в моем коде.
В настоящее время я использую tess-2 для своего приложения для Android, тогда мне просто интересно, может ли эта функция работать для Android?

Было бы здорово, если бы вы могли привести мне пример, который использует tesseract api для рендеринга pdf, а затем я попытаюсь tess-two отсутствующие функции для библиотеки tess-two .
Заранее спасибо.

P / s: я могу видеть файл pdfrenderer, который может обрабатывать вывод вывода pdf, но я не знаю, как его применить с базовым api.

Обновление : вот моя попытка:

  tesseract::TessResultRenderer* renderer = new tesseract::TessPDFRenderer(nat->api.GetDatapath()); __android_log_print(ANDROID_LOG_ERROR, "Test_tesseract", "data path = %s", nat->api.GetDatapath()); if (!nat->api.ProcessPages(c_file_name, NULL, 0, renderer)) { __android_log_print(ANDROID_LOG_ERROR, "Test_tesseract", "process page failed"); delete renderer; return; } FILE* fout = fopen(c_pdf_file_name, "wb"); if (fout == NULL) { __android_log_print(ANDROID_LOG_ERROR, "Test_tesseract", "Cannot create output file %s\n", c_pdf_file_name); delete renderer; return; } const char* data; int dataLength; bool boolValue = renderer->GetOutput(&data, &dataLength); if (boolValue) { fwrite(data, 1, dataLength, fout); if (fout != stdout) fclose(fout); else clearerr(fout); }else{ __android_log_print(ANDROID_LOG_ERROR, "Test_tesseract", "Cannot get output file"); } delete renderer; 

Мой код не был ProcessPages методом ProcessPages . После записи журнала (у меня проблема с отладкой в ​​ndk), я обнаружил, что файл BeginDocument всегда возвращает false в TessBaseAPI::ProcessPages baseapi.cpp :

 if (renderer && !renderer->BeginDocument(kUnknownTitle)) { success = false; } 

Мне что-то не хватает?

P / s: я использую tess-two , которые предпочитают baseapi для capi

Это выглядит так:

 TessResultRenderer renderer = api.TessPDFRendererCreate(dataPath); api.TessBaseAPIProcessPages1(handle, image, null, 0, renderer); PointerByReference data = new PointerByReference(); IntByReference dataLength = new IntByReference(); api.TessResultRendererGetOutput(renderer, data, dataLength); byte[] bytes = data.getValue().getByteArray(0, dataLength); // then write bytes array to a file with PDF extension. 

Если у вас есть проблемы, следуя кодам, ознакомьтесь с примером визуализации в этом сообщении .

Intereting Posts
Невозможно найти класс символов для сгенерированного кода Butter Knife Android – как предотвратить загрузку веб-страниц при отсутствии подключения к Интернету Как мы узнаем, что переход к совместному элементу Activity будет запущен? Планшет Gmail, такой как элементы Actionbar Серьезные сбои в работе камеры и RuntimeException в Android Android: Что такое отображение Proguard и ProGuard Плагин Android Emulator на Jenkins – Как продлить время ожидания? Повторяют ли соединения Apache DefaultHttpClient (Android) и NSURLConnection (iOS) неудачные соединения со старыми версиями протокола? Android Studio устанавливает точный сигнал тревоги с помощью значка Есть ли способ проверить видимость строки состояния? Загрузите большой файл в Android без ошибки outofmemory Как поддерживать состояние индикатора выполнения при использовании залпа? Android Alternate row Colors в ListView Как правильно выводить данные JSON с помощью PHP Android – расширяемый Listview SetIndicatorBounds не работает в Kitkat android-4.4