Skrypt do przetwarzania tekstu

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
pyotr_p
Piegowaty Guziec
Piegowaty Guziec
Posty: 11
Rejestracja: 03 maja 2020, 20:32
Wersja Ubuntu: inny OS
Środowisko graficzne: Cinnamon
Architektura: x86_64

Skrypt do przetwarzania tekstu

Post 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
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4678
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Re: Skrypt do przetwarzania tekstu

Post autor: jacekalex »

Czytałeś:

Kod: Zaznacz cały

man pdftotext
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
pyotr_p
Piegowaty Guziec
Piegowaty Guziec
Posty: 11
Rejestracja: 03 maja 2020, 20:32
Wersja Ubuntu: inny OS
Środowisko graficzne: Cinnamon
Architektura: x86_64

Re: Skrypt do przetwarzania tekstu

Post 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...
Awatar użytkownika
kszyhus
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1100
Rejestracja: 19 lis 2010, 08:34
Płeć: Mężczyzna
Wersja Ubuntu: 22.04
Środowisko graficzne: GNOME
Architektura: x86_64
Lokalizacja: okolice Ostrowa Wielkopolskiego

Re: Skrypt do przetwarzania tekstu

Post 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"
:clap: PC: Gigabyte H270-HD3 *** Intel i7 7700 *** 32GB RAM
Laptop: Dell Vostro 3590 *** Intel i5-10210U *** 16GB RAM
pyotr_p
Piegowaty Guziec
Piegowaty Guziec
Posty: 11
Rejestracja: 03 maja 2020, 20:32
Wersja Ubuntu: inny OS
Środowisko graficzne: Cinnamon
Architektura: x86_64

Re: Skrypt do przetwarzania tekstu

Post 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?
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 75 gości