中国知网(CNKI)是最重要的中文学术资源数据库,收录绝大多数中文学术刊物。我们可以检索论文,也可以导出检索结果前6000条论文的题录数据。

在CNKI检索结果翻页10次以上,用户需要手动输入验证码才能继续。为了实现自动化题录数据导出,我们就需要通过程序识别验证码。最终,基于Eugu.CV实现验证码识别,正确率在70%以上,能保证自动化导出过程的连贯。

CNKI验证码识别主要分为四个步骤:

1 去掉灰色干扰线

2 去掉干扰点

3 二值化

4 基于Tesseract识别

CNKI验证码是长这个样子。

首先,要去掉验证码图片的灰色干扰线,如图:

去掉干扰线的思路:干扰线都是灰色,而灰色的RGB三色的值相对来说都比较大,所以将RGB三色值均大于150的点的颜色设置成白色。代码如下:

            Bitmap bmp = (Bitmap)Image.FromFile(imagePath);

            for (int i = ; i < bmp.Width; i++)
{
for (int j = ; j < bmp.Height; j++)
{
Color color = bmp.GetPixel(i, j);
int threshold = ;
if (color.R > threshold && color.G > threshold && color.B > threshold)
{
Color newColor = Color.FromArgb(, , );
bmp.SetPixel(i, j, newColor);
}
}
}

然后,去掉干扰点,如图:

去掉干扰点的思路很简单,遍历每个点,如果它上下左右8个邻居点,有6个以上是白色的点,就把这个点也设置成白色。

            for (int i = ; i < bmp.Width; i++)
{
for (int j = ; j < bmp.Height; j++)
{
var colorList = GetColorList(bmp, i, j); var count = colorList.Count(x => x.R == && x.G == && x.B == ); if (count >= )
{
bmp.SetPixel(i, j, Color.FromArgb(, , ));
}
}
}

图片识别前需要二值化,也就是把图片变成黑白两色,即把所有的点都变成黑色。

Eugu.CV提供了二值化的方法。

           var gray = new Image<Gray, Byte>(bmp);
var image = gray.CopyBlank();
CvInvoke.Threshold(gray, image, , , ThresholdType.Triangle);

最后,就是用Eugu.CV集成的Tesseract-OCR识别二值化图片。

Tesseract是非常强大的OCR开源库,Eumu.CV集成了Tesseract 4.0,可以用lstm识别模式提供识别效率。

            Emgu.CV.OCR.Tesseract ocr = new Emgu.CV.OCR.Tesseract(path, "eng", Emgu.CV.OCR.OcrEngineMode.LstmOnly, whitelist, true);
ocr.PageSegMode = Emgu.CV.OCR.PageSegMode.SingleLine;
var gray = new Image<Gray, Byte>(image);
ocr.SetImage(gray);
if (ocr.Recognize() != )
throw new Exception("Failed to recognizer image"); var list = ocr.GetCharacters().Select(x => x.Text); textBox.Text = string.Join("", list);

如果你对识别结果的精确度不够满意,还可以通过Tesseract自己训练提高识别精度。

中国知网(CNKI)验证码识别的更多相关文章

  1. 中国知网cnki(永久会员账号)

    中国知网cnki(永久会员账号)大男孩免费分享   网站简介: (中国知网http://www.cnki.net/)中国知网是国家知识基础设施(National Knowledge Infrastru ...

  2. 2015年最新中国知网CNKI免费账号直接入口

    以下是Free9免费资源网小编收集整理的2015年最新中国知网CNKI免费账号直接入口,现免费分享给大家(仅供测试使用),此类文献数据库资源有时效性,希望对您的学习.工作上有所帮助! 中国知网直接入口 ...

  3. 如何将中国知网CNKI中的文献导入EndNote X6

    如何将中国知网CNKI中的文献导入EndNote X6 下面给出具体步骤: 1.在CNKI中检索目标文献,如检索<基于Qt的三维可视化技术研究> 我喜欢在CNKI(http://www.c ...

  4. 中国知网(cnki)上caj格式转pdf的方法 ----------------- 转载

    原文地址: https://blog.csdn.net/edogawachia/article/details/85340636 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议 ...

  5. 去掉cajviewer 右上角的“中国知网数字出版物超市

    cajviewer软件是一款可以提取pdf字码的软件(即使pdf是扫描版的) 下面是转的一个博文可以去除软件右上角图标的方法: 去掉cajviewer 7.1.2右上角的“中国知网数字出版物超市” 1 ...

  6. Python爬取中国知网文献、参考文献、引证文献

    前两天老师派了个活,让下载知网上根据高级搜索得到的来源文献的参考文献及引证文献数据,网上找了一些相关博客,感觉都不太合适,因此特此记录,希望对需要的人有帮助. 切入正题,先说这次需求,高级搜索,根据中 ...

  7. “CNKI 中国知网 PDF 全文下载”油猴脚本在线安装地址

    https://greasyfork.org/zh-CN/scripts/18841-cnki-%E4%B8%AD%E5%9B%BD%E7%9F%A5%E7%BD%91-pdf-%E5%85%A8%E ...

  8. [工具] 知网(CNKI)文献下载工具

    https://github.com/amyhaber/cnki-downloader 用于免费搜索,下载CNKI上的各类文献资料

  9. python爬取中国知网部分论文信息

    爬取指定主题的论文,并以相关度排序. #!/usr/bin/python3 # -*- coding: utf-8 -*- import requests import linecache impor ...

随机推荐

  1. 100天搞定机器学习|day43 几张GIF理解K-均值聚类原理

    前文推荐 如何正确使用「K均值聚类」? KMeans算法是典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大.该算法认为簇是由距离靠近的对象组成的,因此把 ...

  2. webpack4 前端框架基础配置实例-解决css分离图片路径问题

    1.安装nodejs 2. 需要全局和项目安装webpack和webpack-dev-server npm install webpack webpack-dev-server -g npm inst ...

  3. GStreamer基础教程07 - 播放速率控制

    摘要 在常见的媒体播放器中,通常可以看到快进,快退,慢放等功能,这部分功能被称为“特技模式(Trick Mode)”,这些模式有个共同点:都通过修改播放的速率来达到相应的目的. 本文将介绍如何通过GS ...

  4. AR+工业,带来哪些革变呢?

            随着技术的普及相信大家对VR和AR也略有所知,尤其是AR增强现实技术,已经成为许多科技巨头企业争相扩疆的热土,目前来说,AR技术最广泛的应用是工业领域,已经显示出巨大的价值.     ...

  5. 百度地图小Demo---获取当前地址以及拖拽显示地址

    1.效果图 2.源码 主要使用百度地图的JavaScript API文件,以及一个JQuery文件. <!doctype html> <html lang="en" ...

  6. 01-python3基础-基本数据类型

    Python3 基本数据类型 标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Diction ...

  7. nginx安装错误:c compiler cc is not found

    今天安装软件nginx的时候遇到的报错:c compiler cc is not found 查了下网上的资料,解决方案也不复杂. 先说明下环境: 服务器:CentOS 7 nginx:2.3.1 原 ...

  8. 答辩过了,但我知道我写的是一坨shi

    如果时间可以重来, 请好好珍惜大学里最重要的一份答卷. 以后的你会发现, 这种完全独立做出科研成果的机会, 可能不会再有. 1.保研了,才发现科研是多么难的一件事. 一直以来,读的喜欢的专业,考试成绩 ...

  9. luogu -P1095 守望者的逃离 - 分别DP

    P1095 守望者的逃离: https://www.luogu.org/problemnew/show/P1095 题意: 有一个人要在S长度的直线上跑过去,初始有M的魔法值,用10点魔法值可以在一秒 ...

  10. HDU - 4358 Boring counting (dsu on tree)

    Boring counting: http://acm.hdu.edu.cn/showproblem.php?pid=4358 题意: 求一棵树上,每个节点的子节点中,同一颜色出现k次 的 个数. 思 ...