Tool oder Bibliothek zum Kopieren von OCRed-Text von einem PDF in ein anderes

Ich habe eine PDF-Datei, die wahrscheinlich mit Adobe Professional und einigen zusätzlichen Änderungen OCRed ist, die nicht rückgängig gemacht werden können. Ich habe ein Original-PDF ohne OCRed oder andere Bearbeitungen.

Ich möchte nun den OCRed-Text in die Originalkopie einbauen.

  • Gibt es c/c++/Python-Bibliotheken, um dies mit meinem eigenen Code zu erreichen?
  • Gibt es Anwendungen (vorzugsweise in Linux, aber auch in Windows), die dies einsatzbereit implementiert haben?
Tim, auf dieser Seite geht es darum, Software für bestimmte Aufgaben zu empfehlen. Ihre Frage sieht eher so aus, als würde Sie nach einem Tutorial fragen, das hier nicht zum Thema gehört. Wenn Sie wissen wollen, wie man das selbst programmiert, ist dies nicht der richtige Ort (nicht sicher, ob Stack Overflow oder Programmierer passen, aber Sie können auf deren /help/on-topicSeite nachsehen). Wenn Sie nach einer Software suchen, die diese Aufgabe erledigt, ist eine Umformulierung erforderlich. Siehe Was ist erforderlich, damit eine Frage „genügend Informationen“ enthält? für eine grobe Anleitung.
Ich bitte um Empfehlungen für Tools (Bibliotheken oder Software), nicht für Tutorials.
OK, verstanden. Ich habe Ihre Frage ein wenig bearbeitet, um das klarer zu machen (und um zu verhindern, dass andere um dieselben Details kämpfen).
Dafür ist hOCR da. DigitWiki bietet eine Einführung in grundlegende Konzepte und Werkzeuge.

Antworten (2)

Sie haben erwähnt, dass Sie eine Bibliothek verwenden möchten, um diese Art der Erkennung in Ihrem eigenen Code zu implementieren. Ich würde vorschlagen, LEADTOOLS OCR zu verwenden, dies ist ein kommerzielles SDK für optische Zeichenerkennung. Das LEADTOOLS OCR SDK ist sowohl für C als auch für C++ verfügbar. Ich habe mithilfe der C-Bibliotheken ein einfaches Code-Snippet zusammengestellt, das eine Bitmap aufnimmt und den Text ausdruckt.

       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);

Sie können die Ergebnisse alternativ auch direkt im PDF- oder unterstützten Dokumentformat speichern:

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

Sie können mehr Code und Informationen auf ihrer Hilfeseite finden .

Als OCR-Tool verwende ich Microsoft OneNote. Wenn Sie mit der rechten Maustaste auf ein Bild klicken, kann es den gesamten Text in Bildern kopieren und es hat auch die Möglichkeit, Text in Bildern zu suchen. Es ist kostenlos und genau, läuft unter Windows und unterstützt fast alle Bildformate.

Sie können den darin enthaltenen Text kopieren und in ein Textdokument einfügen.

Es kann den Inhalt in PDFs durchsuchen.

Ich bin mir nicht sicher, ob es in Ubuntu funktioniert oder nicht über Wine, da Microsoft Office jetzt für Mac OS verfügbar ist, wird OneNote damit funktionieren.

Bonuspunkt ist, dass es mehrere Sprachen unterstützt :) Englisch, Französisch, Spanisch auch