Strona 1 z 1

Skrypt do przetwarzania tekstu

: 03 maja 2020, 20:48
autor: pyotr_p
Męczę się od jakiegoś czasu ze skryptem do poprawienia tekstu.
Konwetuję pliki pdf do txt.
Niestety taki plik txt ma sporo niedociągnięć np.:
- odstępy (puste linie)
- dziwne znaki (na zdjęciu w czerwonym kółku), które nie są widoczne w LibreOffice i oznaczają początek nowej strony. Chcę żeby ten znak usunąć i całość "dociągnąć" do poprzedniego akapitu (tak jak zaznaczyłem czerwoną strzałką).
Jak to zrobić przy pomocy skryptu?
Poniżej link ze zdjęciem do fragmentu tekstu, który chcę poprawić.
https://drive.google.com/open?id=1uhqV0 ... 2ITYM26Pn4

Na razie uporałem się tylko z pustymi liniami przy pomocy prostego rozwiązania:

Kod: Zaznacz cały

sed '/^$/d' $1 > temp_$1
mv temp_$1 $1
Piotr

Re: Skrypt do przetwarzania tekstu

: 03 maja 2020, 23:01
autor: jacekalex
Czytałeś:

Kod: Zaznacz cały

man pdftotext

Re: Skrypt do przetwarzania tekstu

: 04 maja 2020, 00:15
autor: pyotr_p
Faktycznie, znalazłem, ale to tylko częściowo rozwiązuje problem.
Teraz skrypt do konwersji pdf -> txt wygląda tak (mam to w Nemo/Nautilus actions):

Kod: Zaznacz cały

Exec=pdftotext -nopgbrk "%F"
Podziału strony już nie ma (-nopgbrk), ale jest jeszcze jedna ułomność konwersji z pdf: nadal wiersze obcięte są tak, jak PDF chciał...
Jak teraz "podociągać" te wiersze, żeby wyglądało to tak, jak w pierwszym akapicie na zdjęciu (tam zrobiłem to ręcznie backspacem).

Zdjęcie: https://drive.google.com/open?id=1CoGCI ... hW4tNDRqlh

Tu już chyba pdftotext nie pomoże...

Re: Skrypt do przetwarzania tekstu

: 04 maja 2020, 07:27
autor: kszyhus
Skopiuj znak "Enter-a" między przeniesionymi liniami, otwórz [znajdź i zastąp..] i wstaw tam skopiowany znak w [znajdź] i wstaw w [zastąp] znak spacji,
potem wybierz zastąp wszystkie - i gotowe.
Tak samo możesz zrobić z pustą linią między wierszami wstawiając w [znajdź] 2 znaki "enter-a"

Re: Skrypt do przetwarzania tekstu

: 04 maja 2020, 11:36
autor: pyotr_p
Ale mi nie chodzi o ręczną zabawę, tylko o jakiś skrypt, który to ogarnie. Takich plików do poprawy mam niestety całkiem sporo.

np. taki usuwa niepotrzebne puste linie:

Kod: Zaznacz cały

sed '/^$/d' $1 > temp_$1
mv temp_$1 $1
Znalazłem też coś takiego:

Kod: Zaznacz cały

sed ':a;N;$!ba;s/\n//g' $1 > temp_$1
mv temp_$1 $1
Niby działa, ale tworzy JEDEN ogromny akapit z całego pliku, a to nie o to chodzi... Akapity mają być oddzielne.
A może coś np. w pythonie?