标签:文件 img python param fitz html path pdf
对于存在分栏的pdf文件,可以利用fitz库进行处理:
方式一:利用ocr技术对图片进行处理
方式二:转换成html文件后进行处理
代码:
import os import pytesseract import cv2 as cv import fitz from PIL import Image from tqdm import tqdm class PdfHandler: def run(self): '''执行入口''' # 将指定pdf文件转换成html文件 self.pdf_to_html('test.pdf','test.html') # 解析html文件 self.parse_html('test.html') # 将pdf文件转换成图片 self.pdf_to_img('test.pdf','img_dir',5,5,0) # 解析图片 for img_name in os.listdir('img_dir'): abs_img_name = f'img_dir/{img_name}' self.parse_img(abs_img_name) def pdf_to_html(self,pdf_path,html_path): ''' pdf文件转换成html文件 :param pdf_path: pdf文件路径 :param html_path: html文件路径 :return: ''' # 打开pdf文件,并新建html文件 with fitz.open(pdf_path) as pdf,open(html_path,'w',encoding='utf-8',newline='') as html_file: html_content = ''' <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>pdf转换后的html文件</title> </head> <body> ''' # 遍历每一页pdf,并显示进度条 for page in tqdm(pdf): html_content += page.get_text('html') # 提取每页内容为html html_content += '</body></html>' html_file.write(html_content) # 写入html文件 def pdf_to_img(self,pdf_path,img_path,zoom_x,zoom_y,rotation_angle): ''' pdf文件每页内容都转换成图片 :param pdf_path: :param img_path: :param zoom_x: :param zoom_y: :param rotation_angle: :return: ''' # 如果没有存储文件的目录,则创建 if not os.path.exists(img_path): os.mkdir(img_path) # 打开PDF文件 with fitz.open(pdf_path) as pdf: # 逐页读取PDF for page_index in tqdm(range(0, pdf.pageCount)): page = pdf[page_index] # 设置缩放和旋转系数,zoom_x, zoom_y取相同值,表示等比例缩放 trans = fitz.Matrix(zoom_x, zoom_y).prerotate(rotation_angle) pm = page.getPixmap(matrix=trans, alpha=False) # 开始写图像 page_num = page_index + 1 # 页码从1开始 pm.writePNG(f'{img_path}/{page_num}.png') # 第1张图片名:1.png,以此类推 def parse_img(self,img_name): ''' 利用opencv+pytesseract解析图片中的文字 :param img_name: 具体图片名 :return: ''' img = cv.imread(img_name) text = pytesseract.image_to_string(Image.fromarray(img), lang='eng') # lang可以根据文本内容来定,简体中文:chi_sim print(text) def parse_html(self,html_name): ''' 解析html文件,比如xpath等 :param html_name: html文件名 :return: ''' pass
标签:文件,img,python,param,fitz,html,path,pdf 来源: https://www.cnblogs.com/eliwang/p/16230381.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。