拜访医药类客户遇到需求会要求上传处方签或者知情同意书之类的,需要人工签字,再上传,目前系统审批的格式上传如下:

所以需要影刀批量在模板上加上字迹不同的模拟手写图像。这样可以节省人工编写及扫描上传的时间步骤 。
具体字体实现采用handright库,实现原理是把字体文件存储成图像形式,对字体的笔画、大小、行间距等指标进行随机变动干扰,是输出字体看上去像手写一样,能通过系统审核。
生成模板如图

每个字有一定的随机性。再通过影刀的word操作将相应位置的字体图片粘贴到处方签word的对应光标位置。
具体代码如下,需要安装pillow和handright库
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
from PIL import Image, ImageFont
from handright import Template, handwrite
text = """
窗前明月光
疑是地上霜
举头望明月
低头思故乡
"""
template = Template(
background=Image.new(mode="1", size=(1048, 1048), color=1),
font=ImageFont.truetype("yeprint.TTF",size=100,encoding=''),
line_spacing_sigma=2, # 行间距随机扰动
font_size_sigma=5, # 字体大小随机扰动
word_spacing_sigma=2, # 字间距随机扰动
start_chars="“([<", # 特定字符提前换行,防止出现在行尾
end_chars=",。", # 防止特定字符因排版算法的自动换行而出现在行首
perturb_x_sigma=4, # 笔画横向偏移随机扰动
perturb_y_sigma=2, # 笔画纵向偏移随机扰动
perturb_theta_sigma=0.05, # 笔画旋转偏移随机扰动
)
images = handwrite(text, template)
for im in images:
assert isinstance(im, Image.Image)
im.show()