PDF-Dateien in Wiki konvertieren?

Ich möchte einen sehr chaotischen* Satz von Referenz-PDFs in Wikitext konvertieren. Idealerweise möchte ich diesen Prozess zu einer einfachen One-and-Done-Anwendung machen, verstehe aber, dass ein solches Tool möglicherweise nicht verfügbar ist. Die Verwendung einer Reihe von Zwischenwerkzeugen ist möglich.

Es wird bevorzugt, dass zwischengeschaltete Tools die folgenden Spezifikationen erfüllen (die ersten beiden sind lediglich Präferenzen und können zugunsten der Funktionalität vernachlässigt werden):

  • Konvertieren Sie in HTML statt in Word
  • Haben Sie eine GUI statt einer Befehlszeile.
  • Kann ein paar hundert Seiten PDF verarbeiten.
  • Sind Open Source (obwohl "kostenlose Testversion" akzeptabel ist.)
  • MediaWiki ist das bevorzugte Ausgabeformat, aber andere Formate wären akzeptabel, wenn man bedenkt, dass:
    • Es kann auf dem LAMP-Stack gehostet werden oder ist ein kostenloses SaaS-Wiki
    • Mehrbenutzerzugriff
    • die Möglichkeit, das Wiki privat zu machen

*Die fraglichen PDFs sind beide schwierig zu verwenden, da sie häufig auf Seiten in sich selbst und untereinander verweisen, ohne interne Verlinkung. Sie verwenden zufällig auch eine zweispaltige Formatierung, die die meisten Konvertierungs-zu-HTML/Text-Tools, die ich bisher ausprobiert habe (Calibre/FoxItPDF), anscheinend nicht verarbeiten können - Sie exportieren entweder den Text in derselben Zeile, oder sie erstellen Absatzelemente, die zwischen den beiden Spalten wechseln - es könnte möglich sein, diese Ausgabedateien mit etwas jQuery zu transformieren, aber das ist viel Arbeit für wenig Gewinn.

Windows 10 oder Linux (Ubuntu) würden als verfügbare Plattformen betrachtet. Auch Web-Apps oder Google Drive sind möglich.

Auf welchem ​​Betriebssystem muss diese Software funktionieren? Befürchte, Sie können glücklich sein, wenn Sie den "sauberen Text" in jedem Format herausbekommen. Der automatische Umgang mit diesen (Quer-) Verweisen ist möglicherweise nicht möglich (insbesondere wenn es sich nicht um Links handelt, sondern nur um "Erwähnungen" wie "siehe S.48 im Dokument mit dem Titel X") - ich wäre wirklich überrascht, wenn eine Software damit umgehen könnte richtig, muss dann KI sein :)
Ich würde nicht erwarten, mit den Erwähnungen umzugehen. Das ist etwas, worum wir uns manuell kümmern werden, indem wir den Text in einem Wiki haben – im Moment suchen wir nicht nach einer KI. Windows 10 oder Linux (Ubuntu) würden als verfügbare Plattformen betrachtet. Auch Web-Apps oder Google Drive sind möglich.
Danke für die Rückmeldung! Ich habe das in Ihre Frage integriert, um es leichter zu erkennen. Viel Glück dann! Während ich in der Vergangenheit ein ähnliches Problem hatte, fand ich damals keine gute Lösung und endete mit viel Handarbeit …
Ich fürchte, das könnte auch hier zutreffen. Beachten Sie, dass die Sache mit den zwei Spalten das größte Problem für mich ist. Ich könnte in Betracht ziehen, etwas Java zu schreiben, nur um das aus den Textdateien zu erledigen. Wenn ich das tue, werde ich versuchen, es auf GitHub für alle zu teilen, die hier profitieren könnten.
Ich habe mir bereits viele dieser Fragen angesehen: Die erste letzte Antwort könnte etwas sein, das Sie später heute Abend ausprobieren können. Poppler und MudrawPDF könnten ausprobiert werden, wenn jemand klare Installationsanweisungen posten könnte, da ich mir ihre jeweiligen Websites angesehen habe und anscheinend keine finden konnte. Ich habe auch Calibre und die PDF-Konvertierungsfunktionen von Word ausprobiert. Am Ende erhielt ich das oben erwähnte HTML-Format mit Textabsätzen, die zwischen den Spalten wechselten, oder ein Fehler, der implizierte, dass das PDF zu lang für Word war. Pandoc ist vielleicht auch einen Blick wert, es hört sich so an, als könnte es direkt zum Wiki-Text gehen.
Ich habe im Moment nur etwas wenig Zeit, um es zu versuchen.
Eine genauere Lektüre von Pandoc zeigt, dass es HTML/Word in Wikitext umwandeln kann und wahrscheinlich die Lösung für die zweite Hälfte des Problems ist, aber keine Beweise dafür, dass es direkt aus PDF konvertieren kann.
Ich habe gute Fortschritte bei der Lösung dieses Problems gemacht und werde eine Antwort auf diese Frage posten, sobald ich meinen Arbeitsablauf vollständig dokumentieren kann. Poppler und Pandoc haben sich als meine bevorzugten Tools erwiesen, aber ich habe einen Fehler mit Pandoc .

Antworten (2)

Ich schlage vor, dass Sie die folgenden Schritte ausführen:

PDF → Word → HTML → MediaWiki

PDF zu Word

Es gibt einige kostenlose Online-Tools, die die Konvertierung in sehr guter Qualität durchführen. Am besten gefällt mir SmallPDF . Ich denke, dieser Ansatz ist im Vergleich zu besser, pdftotextda er über eine gute Heuristik verfügt, um Überschriften zu erkennen und die wesentliche Formatierung (fett, kursiv) beizubehalten.

Word zu HTML

Sie können Pandoc verwenden , um die Konvertierung von DOCX nach HTML durchzuführen:

pandoc -i file.docx -s -o file.html

Der -s(eigenständige) Schalter ist wichtig, da er Codierungsinformationen in der HTML-Datei speichert. Wenn Sie die Datei mit einem Webbrowser öffnen, möchten Sie sie richtig sehen.

Eine Einschränkung, die mir beim Testen aufgefallen ist, ist, dass leicht eingerückte Absätze <blockquote>von Pandoc als s angesehen werden könnten. Denken Sie daran, während Sie Ihre Konvertierungen durchführen. Möglicherweise möchten Sie auch die HTML-Datei überprüfen, bevor Sie den letzten Schritt ausführen. Formeln werden wahrscheinlich gebrochen.

HTML zu MediaWiki

Sie können diesen Schritt auch mit Pandoc durchführen. Theoretisch ist der HTML-Schritt möglicherweise nicht erforderlich, aber meiner Meinung nach ist es nützlich, mit einem Browser zu überprüfen, ob alles in Ordnung ist, um eine schnelle Vorschau zu erhalten.

pandoc -i file.html -t mediawiki -o file.wiki.txt

Beispiel

Ich habe diese Methode mit dem Paper Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice getestet . Das Original-PDF sieht so aus:

Original-PDF

Die HTML-Datei (nach den ersten beiden Schritten) ist ganz gut:

html-Ausgabe

Die Einrückung stammt von Absätzen, die als Anführungszeichen behandelt werden. Ich glaube, es kann behoben werden, indem die DOCX-Datei bei Bedarf angepasst wird.

Zum Schluss noch ein Auszug aus dem MediaWiki-Code:

<blockquote>'''Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice'''

David Adrian''¶'' Karthikeyan Bhargavan''∗'' Zakir Durumeric''¶'' Pierrick Gaudry''†'' Matthew Green''§''

J. Alex Halderman''¶'' Nadia Heninger''‡'' Drew Springall''¶'' Emmanuel Thomé''†'' Luke Valenta''‡'' Benjamin VanderSloot''¶'' Eric Wustrow''¶'' Santiago Zanella-Béguelin''&quot;'' Paul Zimmermann''†''
</blockquote>
== ''∗'' INRIA Paris-Rocquencourt ''†'' INRIA Nancy-Grand Est, CNRS, and Université de Lorraine ==

<blockquote>''&quot;'' Microsoft Research ''‡'' University of Pennsylvania ''§'' Johns Hopkins ''¶'' University of Michigan

For additional materials and contact information, visit [https://weakdh.org/ WeakDH.org.]

'''ABSTRACT'''

We investigate the security of Diffie-Hellman key exchange as used in popular Internet protocols and find it to be less secure than widely believed. First, we present Logjam, a novel flaw in TLS that lets a man-in-the-middle downgrade connections to “export-grade” Diffie-Hellman. To carry out this attack, we implement the number field sieve discrete log algorithm. After a week-long precomputation for a specified 512-bit group, we can compute arbitrary discrete logs in that group in about a minute. We find that 82% of vulnerable servers use a single 512-bit group, allowing us to compromise connections to 7% of Alexa Top Million HTTPS sites. In response, major browsers are being changed to reject short groups.

We go on to consider Diffie-Hellman with 768- and 1024-bit groups. We estimate that even in the 1024-bit case, the com- putations are plausible given nation-state resources. A small number of fixed or standardized groups are used by millions of servers; performing precomputation for a single 1024-bit group would allow passive eavesdropping on 18% of popular HTTPS sites, and a second group would allow decryption of traffic to 66% of IPsec VPNs and 26% of SSH servers. A close reading of published NSA leaks shows that the agency’s attacks on VPNs are consistent with having achieved such a break. We conclude that moving to stronger key exchange methods should be a priority for the Internet community.
</blockquote>
= INTRODUCTION =

<blockquote>Diffie-Hellman key exchange is widely used to establish session keys in Internet protocols. It is the main key exchange mechanism in SSH and IPsec and a popular option in TLS. We examine how Diffie-Hellman is commonly implemented and deployed with these protocols and find that, in practice, it frequently offers less security than widely believed.
Ich muss das ausprobieren und sehen, ob wir bessere Ergebnisse erzielen. Danke für den Tipp - wenn es besser funktioniert, kann ich dies in die akzeptierte Antwort ändern.
Gern geschehen. Zumindest scheint mir dies etwas einfacher zu sein, da Sie nicht mit Codierungen herumspielen. :) Wenn Sie es nützlich finden, aber nicht in der Lage sind, es zu akzeptieren, können Sie es in Erwägung ziehen.
Anscheinend kann ich SmallPDF nicht verwenden - ich überschreite die maximale Konvertierungszeit. Ich habe es mit PDFs zu tun, die vielleicht 1000 Seiten überschreiten, das kann also ein Hindernis sein. Kennen Sie andere Konverter?
Könnten Sie vielleicht pdfsamdie PDFs in Stücke von 100-200 Seiten aufteilen?
Siehe auch Sejda für eine Website mit einem Limit von 200 Seiten: sejda.com/pdf-to-word
ist pdfsam eine Art Befehlszeilenprogramm?
Nicht wirklich, es ist eigentlich ein Open-Source-GUI-Programm. Die Schnittstelle ist Barebones, aber es funktioniert ganz gut. Es wurde von demselben Autor gemacht, der kürzlich Sejda erstellt hat. :) Der erweiterte Name ist "PDF Split and Merge" und Sie können es in den Repositories jeder Mainstream-Linux-Distribution finden.
Ich kann es mir ansehen, aber ich habe festgestellt, dass Poppler auch pdttohtmlBefehle hat und es hat ziemlich gut funktioniert (Beibehaltene Formatierung fast fehlerfrei - einige Probleme mit Färbung und Schriftart, aber insgesamt stimmte ALLES fast genau mit PDF überein. Ich werde meine Antwort mit aktualisieren diese Info, wahrscheinlich später heute Abend.
@DavidDale Ich habe das manchmal benutzt. Ich habe es jetzt mit dem PDF in meiner Antwort versucht, es versucht jedoch nicht, Überschriften oder Unterabschnitte zu erkennen. Es könnte eine gute Option sein, je nachdem, was Sie brauchen.
Wahr. Bei der PDF-Konvertierung werden Sie oft eine Vielzahl verschiedener Tools ausprobieren, bevor Sie etwas finden, das funktioniert.
Es ist eine Weile her, aber ich habe meine Antwort aktualisiert, wenn Sie daran interessiert sind, sie zu sehen.

Nach einigem Experimentieren habe ich eine Multi-Software-Lösung für die Linux-Shell entwickelt. Die Formatierung blieb bei meinen Versuchen sehr gut erhalten, daher kann ich sagen, dass ich mit den Ergebnissen der HTML-Konvertierung zufrieden bin. Die Mediawiki-Ausgabe muss gelegentlich noch etwas aufgeräumt werden, aber insgesamt haben wir ein sehr gutes Ergebnis erzielt.

Tools installieren

Wir verwenden die folgenden Befehlszeilentools:

Diese können mit den folgenden Befehlen installiert werden (Ubuntu Linux 14.04 vorausgesetzt. Passen Sie die Anweisungen für Ihre Linux-Version an. Einige dieser Tools funktionieren möglicherweise auch unter Windows, aber ich stelle keine Installations- oder Verwendungsanweisungen für sie bereit.)

Für Poppler:sudo apt-get install poppler-utils

Für Pandoc: Installationsanleitung

Pandoc empfiehlt ausdrücklich, die .deb-Datei herunterzuladen und daraus zu installieren - wenn Sie jedoch nichts gegen eine ältere Version haben und bereit sind, damit verbundene Fehler zu riskieren, sudo apt-get install pandockönnte sie problemlos funktionieren.

Verwenden von Poppler zum Extrahieren von PDF-Text als HTML

Poppler enthält eine Reihe von Befehlszeilen-Tools zum Extrahieren von Dingen wie Bildern aus PDF-Dateien, die hier ausführlicher beschrieben werden .

Schritte:

  1. Navigieren Sie zu dem Verzeichnis, in dem sich Ihre PDF-Dateien zur Konvertierung befinden.
  2. Erstellen Sie ein Unterverzeichnis für die Ausgabedateien: sudo mkdir dirname.
  3. Führen Sie den folgenden Befehl aus:

    sudo pdftohtml -s -p -fmt png -nodrm "file.pdf" "file/file.html"

Dieser Befehl erstellt viele Dateien, weshalb wir die Ergebnisse in einem eigenen Verzeichnis enthalten. Es werden alle Bilder in der Datei extrahiert, sodass alle diese dort gespeichert werden. Außerdem werden zwei HTML-Dateien erstellt, von denen eine eine Gliederung ist und die andere den gesamten Text in einer Formatierung enthält, die dem Original sehr nahe kommt.

Sie können eingeben pdftohtml -h, um die verfügbaren Parameter besser zu verstehen.

Ich habe die hier verwendeten Parameter zum Verständnis des Befehls erklärt:

  • -senthält die gesamte Ausgabe in einem HTML-Dokument (mit Ausnahme der Gliederung.
  • -pVersuche, interne PDF-Links durch HTML-Links zu ersetzen.
  • -fmtsteuert das Ausgabeformat von Bildern, wobei pngund jpggültige Optionen sind.
  • -nodrmigores-Download-Rechteverwaltungsbeschränkungen für das PDF.
  • -iignoriert Bilder. Ich habe dies nicht verwendet, aber es erschien mir ratsam, dies zu erwähnen, da es in einigen Fällen Ihr Ausgabeformat massiv beschleunigen kann.

Alternative Methode: Popplerpdftotext

Poppler hat auch ein pdftotextKommando. Dies war das einzige Tool, das ich bisher gefunden habe, das die PDF-Extraktion gut handhabte, wenn zwei Textspalten vorhanden waren. Während andere Tools gerade von links nach rechts oder abwechselnd Textzeilen aus den beiden Spalten druckten, fügte Poppler den Text in der richtigen Reihenfolge zusammen.

Führen Sie den folgenden Befehl aus:

    pdftotext -htmlmeta "file.pdf" "file.html"

 Replace "file" with the name of the file you want to parse and with the name of the HTML file you want to write your text output to. 
 The `-htmlmeta` option creates an HTML version of the text in your PDF. (This is much less fancy than the previous command and only puts the text in `pre` tags). You should see an HTML file in your directory which you can open to check the results of. Depending on the formatting of your source PDF file, you may find that Poppler is variable in it's effectiveness. You can try running `pdftotext -h` for information on other command options that may improve or worsen your results. 

Verwenden von Pandoc zum Konvertieren von HTML in MediaWiki

(oder fast jedes andere Format!) Pandoc ist ein sehr nützliches Befehlszeilenprogramm, das eine Eingabedatei in nahezu jedem Format in nahezu jedes andere Ausgabeformat konvertiert. Bleiben Sie im selben Verzeichnis und führen Sie einfach den folgenden Befehl aus:

 pandoc file.html -f html -t mediawiki -s -o file.txt

Dieser Befehl nimmt einfach die HTML-Datei und schreibt sie im entsprechenden MediaWiki-Format in eine txt-Datei. Ich habe eine Aufschlüsselung der Parameter für die grundlegende Verwendung bereitgestellt, falls Sie in ein anderes Format konvertieren müssen.

  • -fDas Eingabeformat der Datei.
  • -tDas Format der Ausgabedatei.
  • -sStandalone fügt dem Dokument eine Kopf- und Fußzeile hinzu, anstatt ein Dokumentfragment zu erstellen.
  • -oDer Name der Ausgabedatei.

Weitere Informationen zu Pandoc finden Sie im Benutzerhandbuch .

Es ist möglich, dass bei Pandoc ein Fehler auftritt, der vermutlich dadurch verursacht wird, dass Ihre Datei zu groß ist. Ich bin auf diesen Fehler gestoßen und einige Fehlerbehebungen finden Sie hier .

Optional: Schlechte Codierung bereinigen

Abhängig von Ihrer PDF-Codierung finden Sie möglicherweise seltsame Unicode-Zeichen in Ihrer HTML-Ausgabe. Dieser Schritt soll diese Ausgabe mit dem bestmöglichen Genauigkeitsgrad bereinigen. ftfy steht für fixes text for you und ist eine Python-Bibliothek mit einer Befehlszeilenschnittstelle. Wir werden die Befehlszeile verwenden, um unsere Dateien zu bereinigen. Dieser Schritt wird vor der Verwendung von Pandoc durchgeführt.

So installieren Sie ftfy:

git clone https://github.com/LuminosoInsight/python-ftfy.git
cd python-ftfy
sudo python setup.py install

Oder, wenn Ihr System Pip hat, pip install ftfy. Beachten Sie, dass Sie Python 3 benötigen, wenn Sie eine Version von 5.0 (die neueste verfügbare zum Zeitpunkt des Schreibens) oder höher verwenden möchten. Ich habe Python 2.x mit ftfy 4.1.1 für diese Antwort verwendet. Geben Sie im selben Verzeichnis den folgenden Befehl ein:

 ftfy -o file_clean.html --preserve-entities file.html

Optional können Sie die --guessOption hinzufügen, dass ftfy Ihre Kodierung erraten soll, oder --encodingwenn Sie Ihre Kodierung kennen. Dies kann zu besseren Ergebnissen führen.