要得呢就是左边的这种。缩小版的
原意呢是从pdf里面找表格,流程图,
原来的代码是pdf转图片(默认是1654x2339 pixels,这块原来也不知道能调整),然后从图片上用滑窗,svm,图像金字塔,NMS等技术把流程图,表格那块截下来,,呃呃呃,扯远了。。。。。。好像和标题没有关系。。。。。。
images = convert_from_path(temp, dpi=9)
这个dpi默认是200,转化出来的就是1654x2339,一个屏幕放不开,,,,,等于9时就是这么大
你看特征很明显,,,,要是把1654x2339这个图片缩小的话,就很不明显,结果完全不一样
总的代码是:(这个有我环境,需求的影响,有的地方看起来没有必要,)
# 将pdf文件弄成图片,每一页
from PyPDF2 import PdfFileReader, PdfFileWriter
from pdf2image import convert_from_path, convert_from_bytes
import os
import tempfile
import cv2
import re
def split_pdf(infile, out_path, temp):
"""
:param infile: 待拆分的pdf文件
:param out_path: 拆分成单页的pdf文件的存储路径
:return: 无
"""
if not os.path.exists(out_path):
os.makedirs(out_path)
with open(infile, 'rb') as infile:
reader = PdfFileReader(infile)
number_of_pages = reader.getNumPages() #计算此PDF文件中的页数
for i in range(number_of_pages):
global number
number = i
writer = PdfFileWriter()
writer.addPage(reader.getPage(i)) # 2019.8.17 这个地方没错,删了个-1 。若是不删的话将会以最后一页为0,第一页为1,依次往下;删了的话将以第一页为0,第二页为1,依次往下。
out_file_name = temp
with open(out_file_name, 'wb') as outfile:
writer.write(outfile)
yield i
# try:
# with open(out_file_name, 'wb') as outfile:
# writer.write(outfile)
# yield i
# except:
# print("chucuole "+ str(number))
def turn_picture(in_File, out_Path):
temp = '/home/zh/local/chartProject/' + 'temp'+'.pdf'
for i in split_pdf(in_File, out_Path, temp):
with tempfile.TemporaryDirectory() as path:
images = convert_from_path(temp, dpi=9)
for index, img in enumerate(images):
global number
# *** 取名字要注意
img.save(os.path.join(out_Path, re.compile("[0-9|a-z]*").findall(os.path.basename(in_File))[0]+"_"+str(number)+".png"))
number += 1
# print('已经转化'+str(number))
if __name__ == '__main__':
for file in os.listdir('/home/zh/local/chartProject/1000份/'):
global in_File
in_File = os.path.join('/home/zh/local/chartProject/1000份/', file)
# in_File = '/home/zheng/zheng/1doc/003.pdf'
out_Path = '/home/zh/local/chartProject/1pic/' # 生成输出文件夹
print(in_File)
turn_picture(in_File, out_Path)