Я пытаюсь создать код для извлечения текста из PDF-файлов и помещения его в базу данных. Для этого я использую Extract_text().
Однако по какой-то причине некоторые пробелы между словами исчезают (например, Australian Shiraz Challenge --> AustralianShirazChallenge). Как мне с этим справиться или какой альтернативный метод/встроенную функцию мне следует использовать вместо этого.
Кроме того, мне нужно иметь возможность чтобы скорректировать мой код чтобы иметь возможность извлекать определенные «столбцы» со слишком большими дополнительными трудностями.
import math
import pdfplumber
import fitz
def find_word_coordinates(pdf_path, search_word):
"""
Find the exact coordinates of a specific word in a PDF file.
:param pdf_path: Path to the PDF file
:param search_word: The word to search for
:return: A dictionary with page numbers as keys and lists of coordinates as values
"""
coordinates = {}
# Open the PDF file
with fitz.open(pdf_path) as doc:
for page_number in range(len(doc)):
page = doc[page_number]
# Search for the word in the page text
text_instances = page.search_for(search_word)
if text_instances:
# Store the coordinates for the page
coordinates = [
inst.x0
for inst in text_instances
]
return coordinates
# Function to extract blurb using keywords from the extracted text
def extract_column(pdf_path,x0,y0,x1,y1):
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
# Get the dimensions of the page
width, height = page.width, page.height
# Define the crop box for the right-hand side (e.g., the right half of the page)
right_side = (x0, y0, x1, y1) # Coordinates: (x0, y0, x1, y1)
# Crop the page to focus on the right side
cropped_page = page.within_bbox(right_side)
print(page.within_bbox(right_side))
# Extract text from the cropped area
text = cropped_page.extract_text()
return text
def extract_full_text(pdf_path):
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
width, height = page.width, page.height
name=extract_column(pdf_path,width/4,0,width,height/6);
top=extract_column(pdf_path,width/4,0,width,height/4.8);
column1=extract_column(pdf_path,0,height/4.8,width/5,height);
M=find_word_coordinates(pdf_path, "Winemaking");
N=min(M, key=lambda x:abs(x-width/2));
column2=extract_column(pdf_path,width/5,height/4.8,N-2,height);
P=find_word_coordinates(pdf_path, "Winemaker");
Q=min(P, key=lambda x:abs(x-width*.77));
column3=extract_column(pdf_path,N-2,height/4.8,Q-2,height);
column4=extract_column(pdf_path,Q-2,height/4.8,width,height);
text=[name,top,column1,column2,column3,column4];
return text
Я пытаюсь создать код для извлечения текста из PDF-файлов и помещения его в базу данных. Для этого я использую Extract_text(). Однако по какой-то причине некоторые пробелы между словами исчезают (например, Australian Shiraz Challenge --> AustralianShirazChallenge). Как мне с этим справиться или какой альтернативный метод/встроенную функцию мне следует использовать вместо этого. Кроме того, мне нужно иметь возможность чтобы скорректировать мой код чтобы иметь возможность извлекать определенные «столбцы» со слишком большими дополнительными трудностями.
[code]import math import pdfplumber import fitz
def find_word_coordinates(pdf_path, search_word): """ Find the exact coordinates of a specific word in a PDF file.
:param pdf_path: Path to the PDF file :param search_word: The word to search for :return: A dictionary with page numbers as keys and lists of coordinates as values """
coordinates = {}
# Open the PDF file with fitz.open(pdf_path) as doc: for page_number in range(len(doc)): page = doc[page_number]
# Search for the word in the page text text_instances = page.search_for(search_word)
if text_instances: # Store the coordinates for the page coordinates = [ inst.x0 for inst in text_instances ]
return coordinates
# Function to extract blurb using keywords from the extracted text def extract_column(pdf_path,x0,y0,x1,y1): with pdfplumber.open(pdf_path) as pdf: for page in pdf.pages: # Get the dimensions of the page width, height = page.width, page.height
# Define the crop box for the right-hand side (e.g., the right half of the page) right_side = (x0, y0, x1, y1) # Coordinates: (x0, y0, x1, y1)
# Crop the page to focus on the right side cropped_page = page.within_bbox(right_side) print(page.within_bbox(right_side))
# Extract text from the cropped area text = cropped_page.extract_text()
return text
def extract_full_text(pdf_path): with pdfplumber.open(pdf_path) as pdf: for page in pdf.pages: width, height = page.width, page.height name=extract_column(pdf_path,width/4,0,width,height/6); top=extract_column(pdf_path,width/4,0,width,height/4.8); column1=extract_column(pdf_path,0,height/4.8,width/5,height);
Я пытаюсь создать код для извлечения текста из PDF-файлов и помещения его в базу данных. Для этого я использую Extract_text().
Однако по какой-то причине некоторые пробелы между словами исчезают (например, Australian Shiraz Challenge -->...
Я работаю над задачей, включающей большое количество файлов PDF. Эти PDF содержат ответы на вопросы из различных предметов, таких как математика, физика, химия, статистика и т. Д. Мне нужно извлечь каждый полный ответ в виде изображения или набора...
Я работаю над задачей, включающей большое количество файлов PDF. Эти PDF содержат ответы на вопросы из различных предметов, таких как математика, физика, химия, статистика и т. Д. Мне нужно извлечь каждый полный ответ в виде изображения или набора...
Я собираюсь извлечь текст из нескольких файлов PDF. Файлы PDF включают текст и некоторые изображения, и даже некоторые страницы - сканируемые страницы (я предполагал, что отсканированные страницы похожи на изображения). Я следовал приведенным ниже...