import PyPDF2 from flask_app.general.clean_pdf import extract_common_header, clean_page_content def extract_text_by_page(file_path): common_header = extract_common_header(file_path) print(f"公共抬头:{common_header}") print("--------------------正文开始-------------------") result = "" with open(file_path, 'rb') as file: reader = PyPDF2.PdfReader(file) num_pages = len(reader.pages) # print(f"Total pages: {num_pages}") for page_num in range(num_pages): page = reader.pages[page_num] text = page.extract_text() if text: print("-------------------") cleaned_text = clean_page_content(text,common_header) print(cleaned_text) result += cleaned_text # print(f"Page {page_num + 1} Content:\n{cleaned_text}") else: print(f"Page {page_num + 1} is empty or text could not be extracted.") return result # import fitz # PyMuPDF # import re # # # def clean_page_content(text, common_header): # if common_header: # for header_line in common_header.split('\n'): # if header_line.strip(): # text = re.sub(r'^' + re.escape(header_line.strip()) + r'\n?', '', text, count=1) # # text = re.sub(r'^\s*\d+\s*(?=\D)', '', text) # text = re.sub(r'\s+\d+\s*$', '', text) # text = re.sub(r'\s*\/\s*\d+\s*', '', text) # # return text # # # def extract_common_header(pdf_path): # doc = fitz.open(pdf_path) # headers = [] # total_pages = len(doc) # # if total_pages == 2: # pages_to_read = 2 # start_page = 0 # else: # pages_to_read = 3 # middle_page = total_pages // 2 # start_page = max(0, middle_page - 1) # # for i in range(start_page, min(start_page + pages_to_read, total_pages)): # page = doc[i] # text = page.get_text() # if text: # first_lines = text.strip().split('\n')[:3] # headers.append(first_lines) # # doc.close() # # if len(headers) < 2: # return "" # # common_headers = [] # for lines in zip(*headers): # common_line = set(lines[0].split()).intersection(*[set(line.split()) for line in lines[1:]]) # if common_line: # common_headers.append(' '.join(common_line)) # # return '\n'.join(common_headers) # # # def extract_text_by_page(file_path): # common_header = extract_common_header(file_path) # result = "" # doc = fitz.open(file_path) # num_pages = len(doc) # # for page_num in range(num_pages): # page = doc[page_num] # text = page.get_text() # if text: # cleaned_text = clean_page_content(text, common_header) # print(cleaned_text) # result += cleaned_text # else: # print(f"Page {page_num + 1} is empty or text could not be extracted.") # # doc.close() # return result if __name__ == '__main__': input_path="C:\\Users\\Administrator\\Desktop\\招标文件\\招标test文件夹\\zbtest8.pdf" # file_path = 'C:\\Users\\Administrator\\Desktop\\货物标\\output4\\2-招标文件(2020年广水市中小学教师办公电脑系统及多媒体“班班通”设备采购安装项目)_tobidders_notice_part2.pdf' # file_path = 'C:\\Users\\Administrator\\Desktop\\货物标\\output4\\磋商文件_tobidders_notice_part2.pdf' # file_path = 'C:\\Users\\Administrator\\Desktop\\货物标\\截取test\\交警支队机动车查验监管系统项目采购_tobidders_notice_part1.pdf' # file_path = "C:\\Users\\Administrator\\Desktop\\招标文件\\招标test文件夹\\zbtest8.pdf" # file_path="C:\\Users\\Administrator\\Desktop\\fsdownload\\45f650ce-e519-457b-9ad6-5840e2ede539\\ztbfile_procurement.pdf" # ress = extract_common_header(file_path) # print(ress) res=extract_text_by_page(input_path) # print(res)磋商文件_tobidders_notice_part2.pdf