文章目录
pdf 转图片使用 ocr 识别文字想把 pdf 中的文字提取出来的思路是:
先将 pdf 的每一张都转成图片,然后使用 ocr 技术识别出图片中的文字。
pdf 转图片
核心第三方库是 pdf2image 。
具体怎么操作直接看 python 代码就好了。
"""批量将pdf文件转换成图片jpeg格式"""from pdf2image import convert_from_pathimport osimport shutilfrom tqdm import tqdmimport jsondef pdfToJpeg(dirpath, outputpath):for root, dirs, files in os.walk(dirpath):for file in tqdm(files):file_path = os.path.join(root, file)pages = convert_from_path(file_path, dpi=200)articleID = file[:-4]saveDir = outputpath + '\\' + str(articleID)if os.path.exists(saveDir):shutil.rmtree(saveDir) # 如果存在则删除os.makedirs(saveDir)for i, page in enumerate(pages):page.save(saveDir + '\\' + f'out{i}.jpg')def main():dirpath = r'E:\fw\ISISPDF330\currentPDFbendi'outPath = r'E:\fw\JPEG\bendi'pdfToJpeg(dirpath, outPath)if __name__ == '__main__':main()
使用 ocr 识别文字
核心第三方库是 paddleocr 。
from pdftojpeg import pdfToJpegfrom paddleocr import PaddleOCRimport osdef write_to_txt(lines):passdef main():PDFAddress = "pdf"JPEGAdress = "jpeg"pdfToJpeg(PDFAddress, JPEGAdress) # 调用 pdf 转 图片ocr = PaddleOCR(use_angle_cls=True, lang="ch")for root, dirs, files in os.walk(JPEGAdress):files.sort(key=lambda x: eval(x[3:-4])) # 排序是为了在读取JPG文件时按照指定顺序读取。for file in files:img_path = os.path.join(root, file)result = ocr.ocr(img_path, cls=True)lines = []for line in result:lines.append(line[-1][0])print(lines)print('\n')if __name__ == '__main__':main()
过一段时间之后 paddlepaddle 的函数使用方法可能会变,这个时候去百度飞浆的官网查一下就好了。