19 KiB
Executable File
19 KiB
Executable File
In [ ]:
import os,sys,shutil
import openpyxl
import math
fi_xls = os.getcwd() + '/北海炼化名单表(202110).xlsx'
fi_path = os.getcwd() + '/file/211028'
old = []
dict1 = {}
wb = openpyxl.load_workbook(fi_xls)
sheet = wb.active
depart = []
for n in range(2,sheet.max_row+1):
m_name = str(sheet.cell(n,1).value)
m_depart = sheet.cell(n,5).value
if m_depart not in depart:
depart.append(sheet.cell(n,5).value)
dict1[int(m_name.split('.')[0])] = [sheet.cell(n,2).value.strip(),sheet.cell(n,5).value.strip()]
# 创建部门办公室
m_path = os.getcwd()+'/file/211028/new'
for pn in depart:
if not os.path.exists(m_path + '/' + pn):
os.mkdir(m_path + '/' + pn)
fl=os.listdir(fi_path)
for fn in fl:
if os.path.isfile(fi_path + '/' + fn):
ofn = int(fn.split('.')[0])
old.append(ofn)
old.sort()
for n in old:
o_name = f'{fi_path}/{n}.pdf'
n_name = f'{fi_path}/new/{dict1[n][1]}/{str(n).rjust(5,"0")}-{dict1[n][0]}.pdf'
if not os.path.exists(n_name):
shutil.copyfile(o_name,n_name)
print(n_name)
#print(dict1)In [ ]:
import fitz
import os
def covert2pic(zoom):
if os.path.exists('.pdf'): # 临时文件,需为空
os.removedirs('.pdf')
os.mkdir('.pdf')
for pg in range(totaling):
page = doc[pg]
zoom = int(zoom) #值越大,分辨率越高,文件越清晰
rotate = int(0)
print(page)
trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate)
pm = page.getPixmap(matrix=trans, alpha=False)
lurl='.pdf/%s.jpg' % str(pg+1)
pm.writePNG(lurl)
doc.close()
def pic2pdf(obj):
doc = fitz.open()
for pg in range(totaling):
img = '.pdf/%s.jpg' % str(pg+1)
imgdoc = fitz.open(img) # 打开图片
pdfbytes = imgdoc.convertToPDF() # 使用图片创建单页的 PDF
os.remove(img)
imgpdf = fitz.open("pdf", pdfbytes)
doc.insertPDF(imgpdf) # 将当前页插入文档
if os.path.exists(obj): # 若文件存在先删除
os.remove(obj)
doc.save(obj) # 保存pdf文件
doc.close()
def pdfz(sor, obj, zoom):
covert2pic(zoom)
pic2pdf(obj)
sor = "5.pdf" # 需要压缩的PDF文件
obj = "new-" + sor
doc = fitz.open(sor)
totaling = doc.pageCount
zoom = 150 # 清晰度调节,缩放比率
pdfz(sor, obj, zoom)
os.removedirs('.pdf')
In [ ]:
from pdf2image import convert_from_path, convert_from_bytes
import os,sys
import tempfile
from pdf2image.exceptions import (
PDFInfoNotInstalledError,
PDFPageCountError,
PDFSyntaxError
)
#images = convert_from_path('1.pdf',dpi=200,fmt='jpg', output_folder='./sample_data')
with tempfile.TemporaryDirectory() as path:
images_from_path = convert_from_path('5.pdf', dpi=100,fmt='jpg', output_folder='./pic')
print(path)In [ ]:
import img2pdf
import os,sys
import glob
fl=glob.glob('./pic/*.jpg')
fl.sort()
a4inpt = (img2pdf.mm_to_pt(210),img2pdf.mm_to_pt(297))
layout_fun = img2pdf.get_layout_fun(a4inpt)
with open("name.pdf","wb") as f:
f.write(img2pdf.convert(fl,layout_fun=layout_fun))In [ ]:
import glob
import fitz # 导入本模块需安装pymupdf库
import os,sys
def pic2pdf_1(img_path, pdf_path, pdf_name):
doc = fitz.open()
fl=os.listdir(img_path)
fl.sort()
width, height = fitz.PaperSize("a4")
for img in fl:
fn = img_path+'/'+img
if os.path.isfile(fn):
imgdoc = fitz.open(img_path+'/'+img)
pdfbytes = imgdoc.convertToPDF()
imgpdf = fitz.open("pdf", pdfbytes,width = width, height = height)
doc.insertPDF(imgpdf)
doc.save(pdf_path +'/'+ pdf_name)
doc.close()
img_path = os.getcwd() +'/pic'
pdf_path = os.getcwd()
pic2pdf_1(img_path=img_path, pdf_path=pdf_path, pdf_name='1.pdf')In [ ]:
#将指定目录下图片文件进行文字识别
import os,sys
from aip import AipOcr
import glob
""" 你的 APPID AK SK """
APP_ID = '17553946'
API_KEY = 'IMC1ss3Tyo3vEAdVH6jgcdv2'
SECRET_KEY = 'Iua6KdhuDtz159rjzGeFGpqgjhnoU0zZ'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
options = {}
options["language_type"] = "CHN_ENG"
options["detect_direction"] = "true"
options["detect_language"] = "true"
options["probability"] = "true"
fi_path = os.getcwd()+'/pic'
fl = glob.glob(f'{fi_path}/*.jpg')
fl.sort()
for fl1 in fl:
file_name = fl1
image = get_file_content(file_name)
result= client.basicGeneral(image, options)
if 'words_result' in result:
print('\n'.join([w['words'] for w in result['words_result']]))
print('\n')
In [ ]:
import docx
import json
Doc = docx.Document(r"症状对症处方选穴.docx")
#print("檔案內含段落數:",len(Doc.paragraphs),"\n")
testList = []
text1 = []
dict1 = {}
for text in Doc.paragraphs:
testList.append(text)
i = 0
for pg in testList:
if len(pg.text) >0:
s = ''.join(pg.text.split())
if s[0:1] == '第':
i += 1
n = 0
dict1.setdefault(i,{})
dict1[i]['title'] = pg.text.split()[1]
dict1[i]['sub'] = {}
#dict1[i]['title'].setdefault(i,{})
elif s[0:1] == '(':
sub = s.split(')')[1]
dict2 = {}
dict1[i]['sub'].setdefault(sub,[])
else:
dict1[i]['sub'][sub].append(s)
filename = '症状对症处方选穴.json'
with open(filename,'w') as fl:
json.dump(dict1, fl,ensure_ascii=False)
print('ok') In [ ]:
import docx
import json
Doc = docx.Document(r"常见疾病辨病处方选穴.docx")
#print("檔案內含段落數:",len(Doc.paragraphs),"\n")
testList = []
text1 = []
dict1 = {}
for text in Doc.paragraphs:
testList.append(text)
i = 0
for pg in testList:
if len(pg.text) >0:
s = ''.join(pg.text.split())
if s[0:1] == '第':
i += 1
n = 0
dict1.setdefault(i,{})
dict1[i]['title'] = pg.text.split('节')[1]
dict1[i]['sub'] = {}
#dict1[i]['title'].setdefault(i,{})
elif s[0:1] == '(':
sub = s.split(')')[1]
dict2 = {}
dict1[i]['sub'].setdefault(sub,[])
else:
dict1[i]['sub'][sub].append(s)
filename = '常见疾病辨病处方选穴.json'
with open(filename,'w') as fl:
json.dump(dict1, fl,ensure_ascii=False)
print('ok') In [ ]:
import json
import re
filename = '症状对症处方选穴.json'
pattern = r'[\d\.]'
mo =r'[\u4e00-\u9fa5]+'
dict2 = {}
with open(filename,'r') as fl:
dict1 = json.load(fl)
for k,v in dict1.items():
m_title = v['title']
for k1,v1 in v['sub'].items():
sub_title = k1
s = ''
for mx in v1:
s = s + mx
list1 = re.split(pattern, s)
list2 = []
for ss in list1:
if ss != '':
list3 = re.findall(mo,ss)
list2.append(list3)
#print(m_title,sub_title,list2)
dict2.setdefault(m_title,{})
dict2[m_title][sub_title] = list2
filename = 'new_症状对症处方选穴.json'
with open(filename,'w') as fl:
json.dump(dict2, fl,ensure_ascii=False)
print('ok')
In [ ]:
from newpdfminer.pdfparser import PDFParser, PDFDocument
from newpdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from newpdfminer.converter import PDFPageAggregator
from newpdfminer.layout import LAParams, LTTextBox
from newpdfminer.pdfinterp import PDFTextExtractionNotAllowed
path = "file/211027/114.pdf"
# 用文件对象来创建一个pdf文档分析器
praser = PDFParser(open(path, 'rb'))
# 创建一个PDF文档
doc = PDFDocument()
# 连接分析器 与文档对象
praser.set_document(doc)
doc.set_parser(praser)
# 提供初始化密码
# 如果没有密码 就创建一个空的字符串
doc.initialize()
# 检测文档是否提供txt转换,不提供就忽略
if not doc.is_extractable:
raise PDFTextExtractionNotAllowed
else:
# 创建PDf 资源管理器 来管理共享资源
rsrcmgr = PDFResourceManager()
# 创建一个PDF设备对象
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
# 创建一个PDF解释器对象
interpreter = PDFPageInterpreter(rsrcmgr, device)
# 循环遍历列表,每次处理一个page的内容
for page in doc.get_pages():
interpreter.process_page(page)
# 接受该页面的LTPage对象
layout = device.get_result()
# 这里layout是一个LTPage对象,里面存放着这个 page 解析出的各种对象
# 包括 LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等
for x in layout:
if isinstance(x, LTTextBox):
print(x.get_text().strip())In [ ]:
import pdfplumber
from PIL import Image
# 读取 PDF 文档
pdf = pdfplumber.open("5.pdf")
# 获取页数
print("总页数:",len(pdf.pages))
print("-----------------------------------------")
# 读取第 4 页;索引从 1 开始
page = pdf.pages[0]
print("本页:",page.page_number + 1)
print("-----------------------------------------")
# 单页文件存储为图片
#im = page.to_image()
#im.save('./5_1.png', format='PNG')
# 单页文件中原始图片读取,不能读取图表文件
#imgs = page.images
#for i, img in enumerate(imgs):
# size = img['width'], img['height']
# data = img['stream'].get_data()
# out_path = f'003pdf_images_{i}.png'
# with open(out_path, 'wb') as fimg_out:
# fimg_out.write(data)
# 导出第 4 页文本
text = page.extract_text()
print(text)
In [ ]:
import fitz
import re
import os
file_path = '5.pdf' # PDF 文件路径
dir_path = './data' # 存放图片的文件夹
def pdf2image1(path, pic_path):
checkIM = r"/Subtype(?= */Image)"
pdf = fitz.open(path)
lenXREF = pdf.xref_length()
count = 1
for i in range(1, lenXREF):
text = pdf.xref_object(i)
isImage = re.search(checkIM, text)
if not isImage:
continue
pix = fitz.Pixmap(pdf, i)
new_name = f"img_{count}.png"
pix.writePNG(os.path.join(pic_path, new_name))
count += 1
pix = None
pdf2image1(file_path, dir_path)In [ ]:
import os, sys
from PyPDF2 import PdfFileWriter, PdfFileReader, PdfFileMerger
file = "file/211027/114.pdf"
pdf_reader = PdfFileReader(file)
n = pdf_reader.numPages
print(n)
pdfWriter = PdfFileWriter()
pageObj = pdf_reader.getPage(n-2)
pageObj.scaleBy(1)
pdfWriter.addPage(pageObj)
with open('split_114.pdf', 'wb') as pdfOutputFile:
pdfWriter.write(pdfOutputFile)
In [ ]:
import fitz
import os
file = "file/211027/114.pdf"
doc = fitz.open(file)
n = doc.page_count
print(n)
doc2 = fitz.open()
page = doc[n - 2]
#doc2.insert_pdf(doc, to_page = n-2) # first 10 pages
doc2.insert_pdf(doc, from_page = n-2,to_page = n-2)
#print(type(page))
#doc2.insert_pdf(page) # last 10 pages
doc2.save("first-and-last-10.pdf")
In [ ]: