2009-11-04 5 views
5

obecnie, jeśli zrobię obiekt strony strony pdf z pyPdf i extractText(), to dzieje się tak, że linie są łączone razem. Na przykład, jeśli wiersz 1 strony mówi "cześć", a wiersz 2 mówi "świat", wynikowy tekst zwrócony z extractText() to "helloworld" zamiast "hello world". Czy ktoś wie, jak to naprawić, czy masz sugestie dotyczące pracy? Naprawdę potrzebuję, aby tekst zawierał spacje między wierszami, ponieważ robię wyszukiwanie tekstu na tym tekście pdf i brak spacji między wierszami go zabija ....python i pyPdf - jak wyodrębnić tekst ze stron, tak aby były spacje między wierszami

+1

Możesz chcieć rzucić okiem na tę stronę SO: http://stackoverflow.com/questions/25665/python-module-for-converting-pdf-to-text Jest kilka dobrych propozycji! – avelldiroll

Odpowiedz

2

Jest to typowy problem z analizą pdf. Możesz także oczekiwać końcowych kresek, które będziesz musiał poprawić w niektórych przypadkach. Wymyśliłem obejście jednego z moich projektów, który opiszę wkrótce:

Użyłem pdfminer do wyodrębnienia XML z pliku PDF oraz znalezienia połączonych słów w pliku XML. I ekstrakcji taką samą PDF jako HTML i HTML można opisać za pomocą linii następującej regex:

<span style="position:absolute; writing-mode:lr-tb; left:[0-9]+px; top:([0-9]+)px; font-size:[0-9]+px;">([^<]*)</span> 

Przęsła umieszczone są absolutnie i posiadają top-style, które można wykorzystać do określenia, czy przerwa linia stało. Jeśli wystąpi podział wiersza, a ostatnie słowo na ostatniej linii nie ma końcowego kreska, możesz oddzielić ostatnie słowo od ostatniej linii i pierwszego słowa w bieżącym wierszu. Może to być trudne w szczegółach, ale możesz naprawić prawie wszystkie błędy analizy tekstu.

Dodatkowo możesz chcieć uruchomić bibliotekę słowników, taką jak enchant, na tekście, znaleźć błędy i jeśli poprawka sugerowana przez słownik jest jak słowo błędu, ale z spacją gdzieś, słowo błędu prawdopodobnie będzie błędem parsowania i może być naprawiony za pomocą sugestii słowników.

Parsowanie PDF jest do dupy i jeśli znajdziesz lepsze źródło, użyj go.

Powiązane problemy