Potrzebuję przenieść tysiące fragmentów tekstu z plików PDF do arkusza kalkulacyjnego. Są krótkie, rzadko więcej niż 2-3 rzędy, ale każdy podział linii tworzy nową komórkę i muszę ją naprawić ręcznie, co kosztuje dużo czasu.
Ponieważ mam ich tak wiele, użycie metody „wklej do programu Word i wykonaj operację znajdowania i zastępowania” jest dla mnie zbyt czasochłonne. Czy istnieje sposób, aby podział linii zniknął podczas kopiowania? Może istnieje przeglądarka, która oferuje do tego specjalny tryb kopiowania lub ma wtyczkę?
Dokumenty są artykułami naukowymi. Układ tekstu jest dość liniowy. Możesz założyć, że tekst, który kopiuję, nie znajduje się w tabeli ani na liczbach zmiennoprzecinkowych, nie jest obrócony ani nic. (Jeśli coś takiego się wydarzy, myślę, że poradzę sobie z tym ręcznie). Tekst jest często ustawiany w dwóch kolumnach, ale nie mam problemu z zaznaczeniem tylko tekstu, którego potrzebuję z jego kolumny. Nie muszę zachowywać żadnego specjalnego formatowania. Jestem gotów wypróbować rozwiązanie, które usuwa na przykład wszystkie niedrukowalne znaki. Teksty są w języku angielskim, jest OK, jeśli rozwiązanie działa tylko w ASCII / usuwa wszystkie niealfanumeryczne ASCII kopiowanego tekstu.
Mam bardzo silną preferencję dla rozwiązania, które będzie działać na Linuksie, być może jakiejś wtyczki Okular. Ale jeśli zdarzy się rozwiązanie tylko dla systemu Windows, chcę o tym również usłyszeć. Mam licencję na nieco nową wersję programu Acrobat Pro na komputerze z systemem Windows.
źródło
Odpowiedzi:
Miałem podobny problem, gdy jakiś czas temu pracowałem nad skryptem zamiany tekstu na mowę. Mój skrypt próbowałby rozdzielić wprowadzanie tekstu na części, szukając znaków nowej linii. W przypadku plików PDF spowodowałoby to bałagan z powodu sposobu, w jaki każda linia kończy się nową linią.
Więc to, co zrobiłem, to skomponowałem kilka poleceń
sed
itr
rozważyłem tylko znaki nowej linii kończące się kropką jako rzeczywiste łamanie linii. To nie było bardzo ładne, ale zadziałało.Za pomocą tego fragmentu napisałem dla ciebie mały skrypt, który mam nadzieję pomoże:
Skrypt używa
xsel
do parsowania aktualnie podświetlonego tekstu, a następnie modyfikuje go za pomocą wspomnianego powyżej wiersza poleceniased
itr
. Przetworzony tekst jest następnie przekazywany z powrotem do schowka za pośrednictwemxsel -bi
.Oto jak możesz użyć skryptu w swoim scenariuszu:
xsel
zainstalowałeś (sudo apt-get install xsel
na (K) Ubuntu)copy_without_linebreaks
lub coś podobnego i uczyń go wykonywalnymźródło
Przez lata mnie to denerwowało , więc wymyśliłem ogólne rozwiązanie (Windows) za pomocą Autohotkey . Autohotkey to lekkie, bezpłatne oprogramowanie skryptowe o otwartym kodzie źródłowym dla systemu Windows do tworzenia skrótów klawiszowych dla prawie wszystkiego, co można sobie wyobrazić.
Po naciśnięciu przycisku Ctrl+ ckod jest uruchamiany tylko wtedy, gdy aktywne okno jest czytnikiem plików PDF, w przeciwnym razie po prostu kopiuje podany wybór w zwykły sposób. W przypadku czytnika PDF kopiuje zaznaczenie, usuwa przełamania linii i podwójne spacje oraz umieszcza wynik w schowku. Jeśli nic nie jest zaznaczone, schowek jest praktycznie nietknięty.
Jedynym zadaniem przed zastosowaniem tego kodu jest nazwa klasy okna (
ahk_class
) czytnika. Używam jednego czytnika plików PDF dla wszystkich przypadków (i zakładam, że większość ludzi to robi), FoxitReader i takahk_class
jestclassFoxitReader
. Możesz łatwo obliczyć klasę własnego oprogramowania za pomocąWinGetClass
polecenia (np.AcrobatSDIWindow
Dla Acrobat Reader).Jeśli wolisz czytać pliki PDF w przeglądarce, to nie jest twoje rozwiązanie. Lub możesz po prostu usunąć
#IfWinActive ahk_class classFoxitReader
linię, aby kod zawsze uruchamiał się, ale w tym przypadku wynik zawsze będzie pozbawiony podziałów linii i podwójnych spacji.źródło
Kolejną rzeczą, która mi się sprawdziła, było zapisanie pliku pdf jako html. Akapity w html pozostają nienaruszone, gotowe do skopiowania i wklejenia. Inne formaty plików również działają, takie jak txt lub rtf ... Powinno to również działać w systemach Linux.
źródło
Trzecie podejście z wykorzystaniem makr zostało pokazane tutaj , ale nie próbowałem tego. Wkleiłem tutaj makra na przyszłość, makro 2 autorstwa autora źródła - „Deborah Savadra” - a makro 1 jej czytelnika „Benjamina”:
makro 1:
makro 2:
źródło
Istnieje rozwiązanie Okna pokazane tutaj . Należy pobrać plik „PDF Copy-Paster.exe” i uruchomić go przed kopiowaniem i wklejaniem. Wypróbowałem to i działa dobrze, oprócz tego, że usuwa wszystkie łamania linii. Więc jeśli skopiujesz wiele akapitów, później będziesz miał tylko jeden.
Jest powiązane pytanie na temat SU z drobnym wyjaśnieniem, może być interesujące dla kogoś ...
źródło
:-)
)Wiem, że to stare pytanie, ale czułem, że warto byłoby na nie odpowiedzieć, ponieważ żadne inne rozwiązanie nie było tak łatwe w użyciu jak to.
Użyj aplikacji linux o nazwie Okular, aby otworzyć plik pdf. Następnie Narzędzia-> Narzędzie do wyboru tabeli, a następnie zaznacz tekst w formie tabeli. Następnie Ctrl + C i jesteś gotowy do pracy.
źródło
Rzeczywiste pytanie: /ubuntu/1167026/detect-clipboard-copy-paste-event-and-modify-clipboard-contents
Kredyt trafia do Kenna .
Na podstawie skryptu Glutanimate.
Źródło: https://github.com/SidMan2001/Scripts/tree/master/PDF-Copy-without-Linebreaks-Linux
Usuń podział wiersza podczas kopiowania tekstu z pliku PDF (Linux):
Ten skrypt bash usuwa podziały wierszy podczas kopiowania tekstu z pliku PDF. Działa zarówno w przypadku wyboru podstawowego, jak i Schowka systemu Linux.
Zależności:
sudo apt-get install xsel
Możesz użyć wstępnie skompilowanego clipnotify podanego w repozytorium lub skompilować się samodzielnie.
Aby skompilować klip, powiadom się:
sudo apt install git build-essential libx11-dev libxtst-dev
git clone https://github.com/cdown/clipnotify.git
cd clipnotify
sudo make
Używać :
chmod +x "copy_without_linebreaks.sh"
.\copy_without_linebreaks.sh
źródło
Jeśli masz program Acrobat, kliknij kursor, aby kursor migał w tekście. (To nie zadziała, jeśli tego nie zrobisz.) Przejdź do Zaawansowane, Dostępność, Dodaj tagi. Jeśli masz duży dokument, zajmie to kilka minut, ale znacznie szybciej niż ręczne usuwanie przerw. Voila!
źródło
Proste rozwiązanie z tej strony; http://www.iom3.org/news/how-instantly-remove-unwanted-line-breaks-when-copying-pdf
Nieco dziwaczny, ale kiedy dostaniesz skróty pod palcami, jest to znacznie szybsze
źródło
pdftotext
a następnie użyje dowolnego edytora tekstu, który mu się podoba (ze standardowym wyrażeniem regularnym).