Я пытаюсь извлечь таблицы из PDF-файла, но формат таблицы выглядит так
Я пробую различные библиотеки (неструктурированные, pdfplumber, pymupdf и т. д.), но ни одна из них не дает читаемого формата. Заголовки столбцов печатаются в обратном порядке, вот так
Есть идеи, что я могу сделать или какие библиотеки я могу использовать? Я новичок в Python, поэтому это может быть глупый вопрос.
Протестировано неструктурированное (как версия API, так и версия без API), pdfplumber, pdf2image, pymupdf, Ожидал анализа в любом формате, но должен правильно читать столбцы.
Должен ли я попытаться написать код, чтобы изменить его так, чтобы имена столбцов печатались в горизонтальном формате?
Спасибо кодерам






Попробуйте использовать pdf2docx
Сначала pip install pdf2docx
Тогда что-то вроде
from pdf2docx import Converter
def convert():
cv = Converter('c:\\temp\\file.pdf')
cv.convert('C:\\temp\\filename.docx', start=0, end=None)
cv.close()
Измените пути к файлам соответствующим образом.
Попробуйте Spire.PDF для Python.
pip install Spire.Pdf
Вот как с его помощью можно извлечь таблицы из PDF:
from spire.pdf.common import *
from spire.pdf import *
# Create a PdfDocument object
doc = PdfDocument()
# Load the sample PDF file
doc.LoadFromFile("Table.pdf")
# Create a list to store the extracted data
builder = []
# Create a PdfTableExtractor object
extractor = PdfTableExtractor(doc)
# Loop through the pages
for pageIndex in range(doc.Pages.Count):
# Extract tables from a specific page
tableList = extractor.ExtractTable(pageIndex)
if tableList is not None and len(tableList) > 0:
# Loop through the tables in the list
for table in tableList:
# Get row number and column number of a certain table
row = table.GetRowCount()
column = table.GetColumnCount()
# Loop through the row and column
for i in range(row):
for j in range(column):
# Get text from the specific cell
text = table.GetText(i, j)
# Add the text to the list
builder.append(text + " ")
builder.append("\n")
builder.append("\n")
# Write the content of the list into a text file
with open("Table.txt", "w", encoding = "utf-8") as file:
file.write("".join(builder))
Примечание. Я работаю в компании, разработавшей этот модуль.