Инструмент или библиотека для копирования OCR-текста из PDF-файла в другой

У меня есть pdf-файл, обработанный, вероятно, с помощью Adobe Professional, и некоторые дополнительные правки, которые нельзя отменить. У меня есть оригинальный pdf без OCR или каких-либо других правок.

Теперь я хочу включить OCR-текст в исходную копию.

  • Существуют ли какие-либо библиотеки c/c++/Python для выполнения этого с помощью моего собственного кода?
  • Существуют ли какие-либо приложения (предпочтительно в Linux, но также допустимы и в Windows), в которых это реализовано в готовом виде?
Тим, этот сайт посвящен рекомендациям программного обеспечения для конкретных задач. Ваш вопрос скорее похож на запрос учебника, который здесь не по теме. Если вы хотите знать, как запрограммировать это самостоятельно, это не место (не уверен, подойдет ли Stack Overflow или программисты , но вы можете проверить их соответствующую /help/on-topicстраницу). Если вы ищете какую-то часть программного обеспечения для выполнения этой работы, потребуется некоторая перефразировка. См. Что требуется, чтобы вопрос содержал «достаточно информации»? для исходного руководства.
Я прошу рекомендации инструментов (библиотеки или программное обеспечение), а не учебники.
Хорошо понял. Я немного отредактировал ваш вопрос, чтобы сделать его более ясным (и чтобы другие не боролись за те же детали).
Для этого и предназначен hOCR. В DigitWiki есть введение в основные концепции и инструменты.

Ответы (2)

Вы упомянули о желании использовать библиотеку для реализации этого типа распознавания в вашем собственном коде. Я бы предложил использовать LEADTOOLS OCR, это коммерческий SDK для оптического распознавания символов. SDK LEADTOOLS OCR доступен как для C, так и для C++. Я собрал простой фрагмент кода, используя библиотеки C, которые принимают растровое изображение и распечатывают текст.

       BITMAPHANDLE bitmap = { 0 };
       L_OcrEngine ocrEngine = NULL;
       L_OcrPage ocrPage = NULL;
       L_OcrDocumentManager ocrDocumentManager = NULL;
       L_OcrDocument ocrDocument = NULL;
       L_OcrEngineManager_CreateEngine(L_OcrEngineType_Advantage, &ocrEngine);
       L_OcrEngine_Startup(ocrEngine, NULL, OCR_ADVANTAGE_RUNTIME_DIR);
       L_LoadBitmap("Path to Bitmap", &bitmap, sizeof(BITMAPHANDLE), 0, ORDER_RGB, NULL, NULL);
       L_OcrPage_FromBitmap(ocrEngine, &ocrPage, &bitmap, L_OcrBitmapSharingMode_AutoFree, NULL, NULL);
       L_OcrPage_AutoZone(ocrPage, NULL, NULL);
       retCode = L_OcrPage_Recognize(ocrPage, NULL, NULL);
       L_WCHAR* text = NULL;
       L_UINT textLength = 0;
       L_OcrPage_GetText(ocrPage, -1, &text, &textLength);
       printf("%ls", text);

В качестве альтернативы вы можете сохранить результаты непосредственно в PDF или в поддерживаемый формат документа:

L_OcrDocument ocrDocument = NULL;
L_OcrDocument_Save(ocrDocument, outputPath, DOCUMENTFORMAT_PDF, NULL, NULL);

Вы можете найти больше кода и информации на их справочном сайте .

Я использую Microsoft OneNote в качестве инструмента OCR. При щелчке правой кнопкой мыши по изображению он может копировать весь текст в изображениях, а также имеет возможность искать текст в изображении. Он бесплатный и точный, работает в Windows и поддерживает практически все форматы изображений.

Вы можете скопировать текст внутри и вставить его в текстовый документ.

Он может искать содержимое в PDF-файлах.

Я не уверен, работает ли это в Ubuntu или нет через Wine, поскольку Microsoft Office теперь доступен для Mac OS, OneNote будет работать на нем.

Бонус в том, что он поддерживает несколько языков :) Английский, французский, испанский также