Chcę przeanalizować pdf i usunąć wszystkie tabele, obrazy. Użyłem PyPDF2 i pdfminer do parsowania pliku PDF, ale analizuje również zawartość tabel wraz z innymi treściami. Próbowałem przekonwertować pdf na xml (używając pdfminer), aby uzyskać jakąś strukturę, aby móc zignorować tabele. Ale nie mam żadnej użytecznej struktury. mam element z różnymi identyfikatorami w ten sposób

 <textbox id="1" bbox="56.760,740.908,82.824,751.816">

I wiem, że mogę użyć atrybutu id, aby zignorować tę tabelę, ale mam duży zestaw dokumentów i używając tego podejścia, muszę ręcznie sprawdzić, który identyfikator należy do tabeli, aby móc go zignorować. Czy jest inny sposób na zautomatyzowanie tego zadania?

Oto przykładowy plik pdf i xml.

1
Faizan E Mustafa Mustafa 15 grudzień 2019, 23:38

3 odpowiedzi

Możesz użyć pdfreader, aby wyodrębnić teksty zawierające „przecenę pdf”, a następnie przeanalizować je za pomocą swojego ulubionego narzędzia ( jak wyrażenia regularne), aby pominąć tabele:

from pdfreader import SimplePDFViewer, PageDoesNotExist

fd = open(you_pdf_file_name, "rb")
viewer = SimplePDFViewer(fd)

pdf_markdown = ""

try:
    while True:
        viewer.render()
        pdf_markdown += viewer.canvas.text_content
        viewer.next()
except PageDoesNotExist:
    pass

text = my_cool_tables_parser(pdf_markdown)

0
Maksym Polshcha 19 grudzień 2019, 22:16
Pomóż udostępnić kod funkcji my_cool_tables_parser
 – 
go sgenq
4 maj 2021, 19:09
my_cool_tables_parser to tutaj Twój niestandardowy parser. powinieneś to zakodować.
 – 
Maksym Polshcha
4 maj 2021, 21:21
Czy możesz dać mi kilka wskazówek, jak pominąć tabelę za pomocą wyrażenia regularnego. Po wykonaniu powyższego kodu otrzymuję następujący wynik. 0,750000 0,000000 0,000000 -0,750000 0,000000 841,920044 cm q 0,000000 0,000000 0,000000 rg BT 0 Tr /F1 14.720600 Tf 1 0 0,000000 -1 96.000000 109.919998 Tm [(L) -) -6.000000 ( ) -0.074219] TJ ET Q q 0.000000 g 0.000000 0 Tr /F2 14,720600 Tf 1 0 0,000000 -1 502,559998 109,99998 Tm [( ) -0,074219] TJ ET
 – 
go sgenq
6 maj 2021, 11:32
Przeczytaj str. 9.3 Parametry i operatory stanu tekstu. adobe.com/content/dam/acom/ pl/devnet/pdf/pdfs/PDF32000_2008.pdf
 – 
Maksym Polshcha
11 maj 2021, 17:37

Miałem podobny problem. Chciałem zignorować tabele i wykresy. Ponieważ moja tabela i wykresy zawierały głównie dane liczbowe, wybrałem poniższą metodę. 1. Wyodrębnij tekst za pomocą tika. 2. Podziel tekst na zdania. 3. Użyj stopwords jako odniesienia i odfiltruj te zdania, które nie zawierają co najmniej jednego stopword. (zdanie jest niemożliwe bez jednego przyimka)

To w dużym stopniu rozwiązało problem. RÓWNIEŻ moglibyśmy pozbyć się stopek, tytułów fragmentów do pewnego stopnia, korzystając z tego podejścia

0
Sundararaman P 29 kwiecień 2020, 07:10

Czy możesz dać mi kilka wskazówek, jak pominąć tabelę za pomocą wyrażenia regularnego. Po wykonaniu powyższego kodu otrzymuję następujący wynik.
0,750000 0,000000 0,000000 -0,750000 0,000000 841,920044 cm Q 0,000000 0,000000 0,000000 rg BT 0 Tr /F1 14.720600 Tf 1 0 0,000000 -1 96,000000 109,99998 Tm [(L) -0,851563 (i) -0,605469 (s) -12 000000 (t) 16.000000 ( ) -0,074219 (o) -0,597656 (f) -0,406250 ( ) -0,074219 (R) -8.000000 (e) -0,417969 (p ) 6.000000 (o) 7.000000 (r) -0,468750 (t) -0,679688 (a) -0,652344 (b) 6.000000 (l) -0.605469 (e) -7.000000 ( ) 6.000000 (o) 7.000000 (r) -0,468750 (t) -0,679688 (i) -0,605469 (n) 6,000000 (g) -6.000000 ( ) -0,074219] TJ ET Q Q 0,000000 0,000000 0,000000 rg BT 0 Tr /F2 14.720600 Tf 1 0 0,000000 -1 502,559998 109,99998 Tm [( ) -0,074219] TJ ET

0
go sgenq 6 maj 2021, 11:31