审判者压缩 发表于 2022-5-4 20:26

【原创源码】【python3】生成电子身份证的自动化工具【不完善需要精细化】

本帖最后由 审判者压缩 于 2022-5-4 20:48 编辑

## 【原创源码】【python3】生成电子身份证的自动化工具【不完善需要精细化】
## 事情起因
+ 论坛有人需要个根据【身份证号码,姓名,性别】生成电子身份证的自动化工具,用以扫描识别,减轻工作压力
+ - 这里是求助链接:[[资源求助] 批量生产身份证图片工具 ](https://www.52pojie.cn/thread-1630576-1-1.html)

## 身份证相关
+ 身份证大小:长85.6mm*宽54mm;长度:240像素,高度:151像素。
+ 身份证号码字体 姓名 [方正黑体简体]
+

## 思路
+ 看求助者用的软件截图如下,注册时候需要扫描身份证,注册后没有找到扫描身份证代替输入身份证号码姓名等信息的位置,暂且按照注册时的识别精度进行测试:

+ 软件截图

+ 用py3生成文字附加到背景上
+ 因为不知道识别到什么程度,先按以下修改思路试一试
+ - 用自己的身份证背景,扣掉原有的姓名身份证号码和性别还有其他的文字,重命名image作为背景
+ - 设置好字体
+ - 在背景上确定好姓名的像素位置
+ - 在背景上确定好性别的像素位置
+ - 在背景上确定好身份证号码的像素位置
+ - 身份证号码的间距如果可以忽略就不用一位一位确定位置了,否则就要一位一位确认位置


## 结果
+ 识别不出来,估计是识别软件比较精细,我整的太粗糙了。

## 代码
```
import cv2
import numpy as np
from PIL import ImageFont, Image, ImageDraw
def write_pic(身份证号,姓名,性别,序号):
    #找个背景,扣掉原有的姓名身份证号码和性别还有其他的文字,重命名image作为背景
    # 设置需要显示的字体
    bk_img = Image.open("image.jpg")
    font身份证号 = ImageFont.truetype("OCR-B 10 BT.ttf", 60)#设置好字体
    font姓名 = ImageFont.truetype("方正黑体简体.TTF", 48)#设置好字体
    font性别 = ImageFont.truetype("方正黑体简体.TTF", 48)#设置好字体
    draw = ImageDraw.Draw(bk_img)
    # 绘制文字信息
    #在背景上确定好身份证号码的像素位置
    draw.text((530,800), 身份证号,font=font身份证号, fill=(0,0,0))
    #在背景上确定好性别的像素位置
    draw.text((300,145), 姓名,font=font姓名, fill=(0,0,0))
    #在背景上确定好性别的像素位置
    draw.text((290,275), 性别,font=font性别, fill=(0,0,0))
    bk_img = np.array(bk_img)
    cv2.waitKey()
    createName = str(序号) + ".jpg"
    cv2.imwrite(createName, bk_img)
write_pic("220122199112121212","张三","男",1)
```
## 参考文章:
+ [使用python生成一张图片,并在图片中写入内容](https://blog.csdn.net/qq_28207005/article/details/102504361)
+ [使用Numpy创建纯色图片](https://blog.csdn.net/Gskull/article/details/81105627)
+ [身份证上的字体是什么字体](http://www.17ziti.com/zixun/77702.html)
## 字体在这里下
+ [方正黑体简体](https://wwd.lanzouf.com/idl5g04a6czi)
+ [华文细黑](https://wwd.lanzouf.com/iThLc04a6d1a)
+ (https://wwd.lanzouf.com/imHZb04a6tyj)
## py用的包
```
pip install opencv-python
pip install pillow
```

## 相关函数用法
+ (https://vimsky.com/examples/usage/python-pil-imagedraw-draw-text.html)
+ + 其他函数如果需要修改,请自行搜索函数说明进行修改。

山上石 发表于 2022-5-16 18:14

我们给学生测核酸,很多学生没有身份证。健康码还不好识别,经常识别不了,一是反光,二是手机贴膜,都识别不出来。要是能做个身份证复印件,APP就能识别了。找了半天也没找到能做的。

E式丶男孩 发表于 2022-5-4 20:59

看起来有点危险

wmdz0729 发表于 2022-5-4 21:36

没看懂在干什么

YuanFang0w0 发表于 2022-5-4 22:04

我想底片身份证如果扣上面的文字的时候,不要出现那个白块(photoshop可以实现)的情况下,根据字体字号大小,再根据图片定位坐标,精确放在指定坐标。那么应该是就能扫出来了。

zhuiyixc 发表于 2022-5-4 22:25

感谢楼主

爱折腾 发表于 2022-5-4 23:44

可以的{:1_893:}{:1_893:}
学习啦,谢谢分享

iawyxkdn8 发表于 2022-5-24 09:07

山上石 发表于 2022-5-16 18:14
我们给学生测核酸,很多学生没有身份证。健康码还不好识别,经常识别不了,一是反光,二是手机贴膜,都识别 ...

这个用PS(模版)也是很快的
页: [1]
查看完整版本: 【原创源码】【python3】生成电子身份证的自动化工具【不完善需要精细化】