Ich versuche, ein PDF zu analysieren, um den Text daraus zu extrahieren (bitte schlagen Sie keine Bibliotheken vor, um dies zu tun, da dies Teil des Lernens des Formats ist).
Ich habe sie bereits deflationiert, um sie in das alphanumerische Format zu bringen. Jetzt muss ich den Text aus den Textblöcken extrahieren.
Mein derzeitiges Muster ist also BT.*?\((.*?)\).*?ET
(mit gesetztem DOTMATCHALL), um etwas zu finden wie:
BT
/F13 12 Tf
288 720 Td
(ABC) Tj
ET
Das Einzige, was ich will, ist der Text ABC in den Klammern.
Der obige Text ist nur so formatiert, um ihn zu verdeutlichen. Im deflationierten Text kann alles in einer Zeile stehen, muss aber nicht. Es gibt keine Garantie dafür, dass das BT/ET am Anfang einer Zeile steht. Es kann Leerzeichen und Text vor/nach dem eingeklammerten Abschnitt geben, es kann aber auch nicht sein. Es gibt jedoch nur einen eingeklammerten Abschnitt pro BT/ET-Block.
Das obige Muster funktioniert, ist aber sehr langsam. Ich nehme an, dass es daran liegt, dass die Regex-Bibliothek das Muster, das mit dem Text zwischen BT und (ABC) übereinstimmt, nicht viele Male findet.
Die Regex ist vorkompiliert, um sie zu beschleunigen, aber das scheint vernachlässigbar zu sein.
Wie kann ich das beschleunigen?
0 Stimmen
Ich glaube, Ihre Regex ist falsch formatiert. Versuchen Sie, sie in Backticks zu setzen (`foo`) und sehen Sie, ob sie korrekt angezeigt wird.
0 Stimmen
Und welche Sprache verwenden Sie? Regex hat viele Varianten.
0 Stimmen
Sie ist mit einem Backtick versehen. Der Parser ist die Implementierung von Python.