Во-первых, сценарий не считывает последний столбец «Серийный номер». '
Я выделил область, которая меня интересует, вместе с четкими линиями вертикальной стратегии, которые мне нужны
[img]https://i.sstatic. сеть/7smdO.png[/img]
Как видно на скриншоте, вертикальные линии аккуратно разделяют столбцы, и это верно на всех страницах PDF-файла. Область в рамке также фиксирует все, что я хочу, на всех страницах.
Мой сценарий находится здесь:
Код: Выделить всё
import pdfplumber
pdf_file = r"C:\Users\xxxx\Downloads\Active Aircraft Register.pdf"
box = (0, 35, 980, 565)
explicit_vertical_lines = [18, 57, 127, 325, 518, 713, 830, 920, 984]
all_tables = []
with pdfplumber.open(pdf_file) as pdf:
for page in pdf.pages:
cropped_page = page.crop(bbox=box)
table = cropped_page.extract_table(table_settings={
"vertical_strategy": "explicit",
"explicit_vertical_lines": explicit_vertical_lines,
"horizontal_strategy": "text",
})
if table:
all_tables.extend(table)
# Check if we have any tables extracted
if not all_tables:
print("No tables found in the PDF.")
else:
for row in all_tables[:10]:
print(row)
Файл PDF, который я использую, можно скачать здесь, чтобы протестировать скрипт: https://www.caacayman.com/wp-content/up ... gister.pdf

Подробнее здесь: https://stackoverflow.com/questions/781 ... iline-data