- 搜索之道:信息素养与终身学习的新引擎
- 周建芳 何冰
- 2687字
- 2025-03-27 19:03:42
1.1
一个案例:5秒钟找出8000多个身份证号码中的错误
几年前,我有一个朋友是做会计培训的。每年他都要招收8000多名学生,为了方便管理,他要求每个学生提供身份证复印件,并让员工将身份证上的信息手动录入Excel表格。这些数据在学生管理、考试报名和颁发合格证书时都会被使用。然而,在手动录入身份证信息的过程中,错误是难以避免的,尤其是身份证号码输入错误。这导致后续报名考试时准考证和合格证书上的信息都是错误的,从而引发了一些学生的投诉和纠纷。
当他找到我寻求帮助时,他已经招收了8000多名学生,也收集了8000多张身份证复印件,并在Excel表格中录入了8000多行数据(见图1-1)。他意识到这些数据中肯定存在错误,但问题是如何找到并纠正这些错误呢?

图1-1 需要核对的身份证复印件号码
第一招:逐个核对
我的这位朋友在找我之前,自己还想过一些办法来解决这个问题,也就是这里要说的第一种方法——逐个检查身份证号码的正确性。两个人一组,其中一个人念身份证复印件中的信息,另一个人在Excel表格中核对数据并做好标记。
这种方法很简单,但效果很不好。首先是效率低,两个人一组,一张身份证复印件核对至少需要30秒,1分钟两张,1小时120张,1天按8小时工作时间,只能核对960张,8000多张至少需要9个工作日才能核对完成。
另一个更大的问题是,难以完全找出其中的错误,校对的质量不高。试想一下,当两个人全神贯注、认认真真校对了200个身份证号码,一个错误都没有发现时,注意力就很难继续高度集中,稍不留神,一个错误可能就被放过去了。
第二招:拍照+文字识别
对逐个核对方法的结果不满意,后来有人给他支招,用文字识别的方法来校对。先拍照,然后用文字识别软件识别其中的身份证号码。
由于当时智能手机还不普及,拍照用的是数码相机,文字识别也很难找到在线版,但免费的文字识别软件还是比较多的。搜索文字识别软件(见图1-2),下载安装,然后拍照识别。试了两张,他就放弃了,为什么呢?

图1-2 搜索文字识别软件
拍照很慢,更重要的是身份证复印件大多不是很清楚,清楚的又连底纹都被识别出来,文字识别出来的效果很差,错误更多。显然,文字识别这招不靠谱。
第三招:自动朗读+人工校对
这位朋友在找我之前,还找到了一个解决方案——人工校对,不过不是两人一组,而是用计算机自动朗读,再配合人工校对。
网上有不少实现Excel文本朗读的攻略,查看后搜索相应的插件进行安装(见图1-3),设置后使用。原来需要两个人做的事情,现在一个人就可以完成了,效率提升了一倍。

图1-3 搜索自动朗读插件
但这种方法还是有问题,速度虽然快了1倍,但还是需要很长时间,注意力不能长时间保持集中的问题还是没有解决,难免出错。
第四招:写个程序计算比对
有没有更好的办法呢?
大家都知道国内的身份证号码是一个18位的数字和字母组合,它们的排列是有规律的,前6位是地区编号,中间8位是出生年月日,后面4位也有所区别。用“身份证编码规则”这个关键词在搜索引擎中搜索就得到答案了,具体介绍如图1-4所示。可以发现身份证号码的最后一位(第18位)是校验位,也就是说,身份证号码的第18位是根据前17位数据用一个固定的公式计算出来的。

图1-4 身份证号码中包含的信息
发现这个规则后,写个程序就好了。将身份证号码的前17位进行计算后与第18位进行比对,如果不同,则说明该号码是错误的。不要说8000个身份证号码,就是8万个,都是瞬间搞定的事。
写程序,首先要知道第18位是怎样通过前17位计算出来的,也就是要知道计算公式是什么。继续搜索,用“身份证校验公式”之类的关键词百度一下,很容易找到校验公式。大概意思是:前17位数据分别乘以一个固定的系数,接着对得到的17个结果数据求和,然后用这个结果数据除以11,查看得到的余数,最后通过一个映射表转换一下就得出第18位数。
试想一下,这种情况下求余数有几种可能?对,11种,数字0到10,但第18位是一位数字,只能放数字0到9,多出来的那个就是X。
知道解决思路和具体的公式编写方式后,就可以用对应的软件来编写程序了。
第五招:用ExceI编写校验公式
编写程序能高效解决问题,但并不是每个人都掌握了C++、Python等程序编写语言。不会写程序,又该怎么办呢?
可以在Excel中编写公式啊!这里用IF函数来编写公式就可以完成了。即使对IF函数不熟悉,也可以通过Excel提供的帮助和网络中的学习资源来学习和理解它的用法。使用Excel软件本身提供的帮助信息,只需按照图1-5进行操作,打开如图1-6所示的网页界面,就可以查看IF函数的功能、参数格式、视频讲解,上面还从简单到复杂举了5个例子,看了这些,绝对能够学会。

总之,通过使用Excel编写校验公式,我们可以高效地检查和纠正身份证号码的错误,确保数据的准确性。这种方法不需要具备编程技能,只需要掌握Excel的基本功能即可完成。对于那些不熟悉编程语言的人来说,这是一个简单而有效的解决方案。
第六招:搜索别人写好的校验公式
实际上,用Excel编写一个校验身份证号码的公式还是有点麻烦,先要搞清楚校验规则,还要学习函数,只用IF函数还不行,还需要用到其他函数和设计函数嵌套,对于不擅长编写函数的用户还是不友好。有没有更简单的方法呢?互联网上有没有别人写好的校验公式呢?实际上,当我们感慨如果有一个什么样的东西就好了时,互联网上很可能就有这样的东西。
以“身份证号码 Excel 校验公式”为关键词在搜索引擎中搜索,很容易找到一个别人写好的公式,如图1-7所示。
本来以为把这个公式复制到单元格,自动填充一下就好了,但做的时候才发现,从网页上复制的公式存在格式上的错乱,需要调试,也很麻烦。可以看到图1-7所示的公式很长,先不说调试,光看懂就需要很长时间。我后来调试这个公式用了二十多分钟。

图1-7 身份证号码Excel校验公式
有没有更简单的方法?
第七招:查找别人写好的身份证号码校验ExceI文件
你都想到找别人写好的Excel校验公式了,为什么不一步到位直接找一个别人写好的身份证号码校验Excel文件呢?
我的朋友咨询我这个事的时候,我大概思考了10秒,在搜狗搜索中输入“身份证校验filetype:xls”进行搜索,如图1-8所示,找到合适的文件下载后,按“Ctrl+C”组合键进行复制,然后按“Ctrl+V”组合键进行粘贴,前后不到一分钟,完美解决。从他给我的8000多个身份证号码中,找出了14个错误,而且这8000多个身份证号码还是已经通过语音朗读方法校验过的。

图1-8 搜索身份证号码校验Excel文件
第八招:用ExceI插件5秒搞定
找身份证号码校验Excel文件,不到1分钟解决问题,已经比之前的那些方法快多了。不过这都是10多年之前的方法,如果现在再遇到这种问题,我还有更快的解决方法,只要5秒。
5秒,为什么能这么快?因为,我的Excel安装了方方格子插件,里面有一个DIY工具箱,其中一个功能就是验证身份证号码的合法性。直接选定要验证的身份证号码,按步骤操作即可轻松搞定。