OCR Webservice
Minimum technical requirements
- Java version: 7
- webPDF version: 7
- wsclient version: 1
OCR Schrifterkennung/Texterkennung mit wsclient Bibliothek nutzen:
Wie kann man die Webservices von webPDF mit der wsclient Bibliothek konkret nutzen? Das wollen wir hier an einem konkreten Coding-Beispiel zeigen. Hier soll es konkret um den OCR Webservice gehen.
Wichtiger Hinweis:
Das nun folgende Coding-Beispiel beruht auf der Nutzung der webPDF wsclient Bibliothek. Um das Beispiel zu verstehen und anzuwenden, sollte zunächst folgender Blogbeitrag beachtet werden:
REST- oder SOAP-Session erzeugen
Um den Webservice so aufrufen, wie wir es hier vorstellen möchten, wird davon ausgegangen, dass Sie bereits eine REST- oder SOAP-Session erzeugt haben und somit über Aufruf der WebserviceFactory
entweder ein UrlConverterWebService
Objekt (für eine SOAP Session) erzeugen können:
OcrWebService ocrWebService = WebServiceFactory.createInstance( session, WebServiceType.OCR );
Oder ein UrlConverterRestWebService
Objekt (für eine REST Session) erzeugen können:
OcrRestWebService ocrWebService = WebServiceFactory.createInstance( session, WebServiceType.OCR );
Und diesem WebService
Objekt über Aufruf der Methode setDocument()
entweder ein RestDocument
oder ein SoapDocument
Objekt übergeben haben.
Webservice Parameter
Um ändernden Zugriff auf ein Dokument zu erhalten, müssen Sie dem Webserviceaufruf das aktuelle open
und/oder permission
Passwort des Dokuments mitgeben. Dies können Sie direkt am erzeugten ocrWebService
Objekt tun:
ocrWebService.getPassword().setOpen("password"); ocrWebService.getPassword().setPermission("password");
Verfügt das Dokument nicht über einen entsprechenden Passwortschutz, so können Sie diesen Punkt allerdings überspringen.
Der OCR Webservice
Der OCR
Webservice ist ein Endpunkt Ihres webPDF Servers, der es Ihnen ermöglicht in Grafiken Ihres PDF Dokuments Schrift/Text zu erkennen und diese entweder zu extrahieren oder direkt in einem Textlayer des PDF Dokuments zu hinterlegen.
Sie rufen das OcrType
Objekt wie folgt an Ihrem OcrWebService
Objekt ab, um ihm weitere Parameter zu übergeben:
OcrType ocr = ocrWebService.getOperation();
Am Objekt Ocr
lassen sich folgende Parameter setzen:
language (Standardwert: „eng“)
Die Sprache in der Text erkannt werden soll. Folgende Werte sind hier möglich:
- eng = Englisch
- fra = Französisch
- spa = Spanisch
- deu = Deutsch
- ita = Italienisch
ocr.setLanguage(OcrLanguageType.DEU);
checkResolution (Standardwert: true)
Wird dieser Wert auf true
gesetzt wird geprüft, ob die Auflösung des Dokuments ausreichend für einen Texterkennung ist. Auflösungen unter 200 DPI werden hierbei abgelehnt, da Texterkennungen bei niedrig aufgelösten Grafiken in der Regel zu fehlerhaften Ergebnissen führen.
ocr.setCheckResolution(false);
forceEachPage (Standardwert: false)
Enthält ein PDF-Dokument bereits Seiten mit Textinhalt, so wird eine erneute Texterkennung regulär abgelehnt. Wird dieser Wert auf true
gesetzt, so wird die Texterkennung erzwungen und ein Textlayer für sämtliche textfreien Seiten erzeugt.
ocr.setForceEachPage(true);
imageDpi (Standardwert: 200)
Dieser Wert setzt die minimale Auflösung von Ausgangsdokumenten.
ocr.setImageDpi(300);
outputFormat (Standardwert: „pdf“)
Bestimmt über das Ausgabeformat für den erkannten Text. Wird hier ein PDF Dokument gewählt, so werden die erkannten Texte als Textlayer über die Seiten des Ausgangsdokuments gelegt. Folgende Werte sind hier möglich:
• text = Text-Dokument
• hocr = XML (HOCR)
• pdf = PDF Textlayer
ocr.setOutputFormat(OcrOutputType.TEXT);
Das Objekt „page“
Für die Texterkennung werden Bilder der PDF Seiten mit der gewählten Auflösung erzeugt, wenn Sie dem Objekt Ocr
ein OcrPageType
Objekt hinzufügen, können Sie die Dimensionen der erzeugten Grafiken weiter beeinflussen:
OcrPageType page = new OcrPageType(); ocr.setPage(page);
Am Objekt Page
lassen sich folgende Parameter setzen:
width (Standardwert: 210)
Legt die Breite der Seiten unter Nutzung der gewählten Metrics fest.
page.setWidth(800);
height (Standardwert: 297)
Legt die Höhe der Seiten unter Nutzung der gewählten Metrics fest.
page.setHeight(16);
metrics (Standardwert: „mm“)
Die Maßeinheit, in der die Maße angegeben werden sollen. Folgende Werte können hier gesetzt werden:
• mm = Millimeter
• px = Pixel
page.setMetrics(MetricsType.MM);
Ausführlicheres Beispiel für unseren gesamten Webserviceaufruf
Wir wollen jetzt ein Beispiel für den gesamten Webserviceaufruf für die Ansprache der SOAP Schnittstelle geben:
try ( // Aufbau einer Session mit dem webPDF Server(hier SOAP): SoapSession session = SessionFactory.createInstance( WebServiceProtocol.SOAP, new URL("https://localhost:8080/webPDF/") ); // Bereit stellen des Dokuments, das verarbeitet werden soll // und der Datei, in die das Ergebnis geschrieben werden soll: SoapDocument soapDocument = new SoapDocument( new File("Pfad des Quelldokuments").toURI(), new File("Pfad des Zieldokuments") ) ) { // Wahl des Webservices über eine Factory: OcrWebService ocrWebService = WebServiceFactory.createInstance( session, WebServiceType.OCR ); ocrWebService.setDocument(soapDocument); ocrWebService.getPassword().setOpen("password"); ocrWebService.getPassword().setPermission("password"); OcrType ocr = ocrWebService.getOperation(); ocr.setLanguage(OcrLanguageType.DEU); ocr.setCheckResolution(false); ocr.setForceEachPage(true); ocr.setImageDpi(300); ocr.setOutputFormat(OcrOutputType.TEXT); OcrPageType page = new OcrPageType(); ocr.setPage(page); page.setWidth(800); page.setHeight(600); page.setMetrics(MetricsType.PX); // Ausführung. ocrWebService.process(); } catch (ResultException | MalformedURLException ex) { // Zur Auswertung möglicher aufgetretener Fehler, stellt ihnen die // wsclient Bibliothek entsprechende Methoden zur Verfügung: }
Abschließende Hinweise
- Mehr Infos zur OCR Parameterstruktur sowie Error-Codes finden Sie in unserem Nutzerhandbuch.
- Beachten Sie bitte auch: Sämtliche Parameter sind mit gewissen Standardwerten vorbelegt. Ist ein Standardwert angegeben und weicht dieser nicht von Ihrem gewünschten Wert ab, so ist es nicht zwingend nötig diesen Parameter zu setzen.
Weitere Coding-Beispiele für Webservices, welche Sie mit der ws-client Bibliothek nutzen können finden Sie hier.