篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html

篇二:基于OneNote难点突破和批量识别:http://www.cnblogs.com/baiboy/p/wpf1.html

篇三:批量处理后的txt文件入库处理:http://www.cnblogs.com/baiboy/p/wpf2.html

篇四:关于OneNote入库处理以及审核:http://www.cnblogs.com/baiboy/p/wpf3.html


【小记】:大胆尝试才能突破,某个中医药大学有一批图片需要处理(OCR),然后进行数据挖掘。之前没有接触过OCR这个东西,但是还是应允了。在网上搜索一番,关于中文图片识别,最终敲定为基于微软的OneNote,其识别率相对较高。网上这个技术点的资料真心不多,后来于博客园找到一篇博文,但是那个程序还是bug百出,而且只是单处理。后来经过一番摸索逐个突破,批处理完成。然后进行界面设计,这些零碎工作完成后,便是入库处理。由于OneNote生成的xml文件封装好的,即不可视的。便将其代码处理生成txt文件,再进行Oracle入库处理。入库前需要文件内容审核,并且在WPF开发中数据绑定和分页中做了独特处理。现在经过半个月的工作,本项目做个阶段总结。一则知识总结便于二次开发,尽量保持程序流畅性,核心知识做以梳理;另外,相关WPFOneNote常用技术共享,便于部分园友所需。本人技术有限,欢迎交流。项目还未结束,暂作阶段文章发布,随后相继发布。


篇四:关于OneNote入库处理以及审核

【开篇概述】:文本作为系列文章的最后一篇,主要对页面进行设计布局和审核页面的完善,其中主页面用户可以查询审核通过的信息,浏览详细信息。也可以作为导航到orc页面,对批量图片进行文字处理,处理后的文件,可以通过入库页面对文件信息提取。达到半自动填写表格的状态,由于文件信息不一定符合主观要求或者格式不一致,所以设置了审核页面,也是信息修改页面,信息无误后,选择下面审核通过复选框即可成功入库。后面就是交付做数据挖掘处理了。效果如图所示

主页面:

完整代码:

namespace OnenoteOCRDemo
{
/// <summary>
/// Index.xaml 的交互逻辑
/// </summary>
public partial class Index : Window
{
public Index()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
page page1 = new page();
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
this.c1.Children.Add(page1);
this.Loaded += delegate
{
InitData();
};
dataGrid1.LoadingRow += new EventHandler<DataGridRowEventArgs>(dataGrid1_LoadingRow);
}
void dataGrid1_LoadingRow(object sender, DataGridRowEventArgs e)
{
e.Row.Header = e.Row.GetIndex() + ; //设置行表头的内容值
}
//查询
private void InitData()
{
string sql = "select * from T_TCM_THESIS where auditflag=1 order by ID desc";
DataSet ds = MYHelper.SQLHelper.GetOrlData(sql);
if (ds.Tables[].Rows.Count > )
{
page1.ShowPages(this.dataGrid1, ds, );
}
else
{
System.Windows.Forms.MessageBox.Show("Erroy");
}
} private void Window_Loaded(object sender, RoutedEventArgs e)
{
InitData();
} private void hlorc_Click(object sender, RoutedEventArgs e)
{
Main m = new Main();
m.Show();
} private void hltext_Click(object sender, RoutedEventArgs e)
{
TextData td = new TextData();
td.Show();
}
//刷新
private void hlnew_Click(object sender, RoutedEventArgs e)
{
InitData();
} private void hyper2_Click(object sender, RoutedEventArgs e)
{
this.Hide();
DataRowView mySelectedElement = (DataRowView)dataGrid1.SelectedItem;
int ID = Convert.ToInt32((mySelectedElement.Row[])); //获取该行的FID
falg f = new falg(ID,);
f.Show();
} }
}

审核页面:

完整代码:

namespace OnenoteOCRDemo
{
/// <summary>
/// falg.xaml 的交互逻辑
/// </summary>
public partial class falg : Window
{
int i;
public falg(int id,int n)
{
InitializeComponent();
txt.Text = id.ToString();
THESIS(id);
i = n;
if (i == )
{
btnupdate.Visibility = System.Windows.Visibility.Hidden;
cbflag.Visibility = System.Windows.Visibility.Hidden;
txtflag.Text="审核通过";
}
}
private void THESIS(int id)
{
string sql = "select * from T_TCM_THESIS where id="+id; DataTable dt = MYHelper.SQLHelper.GetTabOrlData(sql);
if (dt.Rows.Count>)
{
txtdocname.Text = dt.Rows[]["docname"].ToString();
txtauthor.Text = dt.Rows[]["author"].ToString();
txtcompany.Text = dt.Rows[]["authorcompany"].ToString();
txtcontent.Text = dt.Rows[]["content"].ToString();
txtdigest.Text = dt.Rows[]["digest"].ToString();
txtdisease.Text = dt.Rows[]["disease"].ToString();
txtdoctype.Text = dt.Rows[]["doctype"].ToString();
txtenglishtitle.Text = dt.Rows[]["englishtitle"].ToString();
txtkeyword.Text = dt.Rows[]["keyword"].ToString();
txtmemo.Text = dt.Rows[]["memo"].ToString();
txtpath.Text = dt.Rows[]["path"].ToString();
txtsource.Text = dt.Rows[]["source"].ToString();
txtsourcetype.Text = dt.Rows[]["sourcetype"].ToString();
txtsummary.Text = dt.Rows[]["summary"].ToString();
txttitle.Text = dt.Rows[]["title"].ToString();
txtyears.Text = dt.Rows[]["years"].ToString();
int flag =Convert.ToInt32(dt.Rows[]["auditflag"].ToString());
if (flag == )
{
cbflag.IsChecked = true;
}
else
{
cbflag.IsChecked = false;
}
}
}
public void TextIsNull()
{
txtdocname.Text = "";
txtyears.Text = "";
txtdoctype.Text = "";
txtsummary.Text = "";
txtauthor.Text = "";
txtsource.Text = "";
txtsourcetype.Text = "";
txtmemo.Text = "";
txttitle.Text = "";
txtenglishtitle.Text = "";
txtcompany.Text = "";
txtkeyword.Text = "";
txtcontent.Text = "";
txtdigest.Text = "";
txtpath.Text = "";
txtdisease.Text = "";
cbflag.IsChecked = false;
}
//审核信息(更新信息)
private void btnupdate_Click(object sender, RoutedEventArgs e)
{
int id=Convert.ToInt32( txt.Text);
string docname = txtdocname.Text.ToString();
string years = txtyears.Text.ToString();
string doctype = txtdoctype.Text.ToString();
string summary = txtsummary.Text.ToString();
string author = txtauthor.Text.ToString();
string source = txtsource.Text.ToString();
string sourcetype = txtsourcetype.Text.ToString();
string memo = txtmemo.Text.ToString();
string title = txttitle.Text.ToString();
string englishtitle = txtenglishtitle.Text.ToString();
string authorcompany = txtcompany.Text.ToString();
string keyword = txtkeyword.Text.ToString();
string content = txtcontent.Text.ToString().Trim();
string digest = txtdigest.Text.ToString();
string path = txtpath.Text.ToString();
string disease = txtdisease.Text.ToString();
int auditflag;
if (cbflag.IsChecked == true)
{
auditflag = ;
}
else
{
auditflag =;
}
try
{
string sql = "update T_TCM_THESIS set docname='" + docname + "',years='" + years + "',doctype='" + doctype + "',summary='" + summary + "',";
sql += "author='" + author + "',source='" + source + "',sourcetype='" + sourcetype + "',memo='" + memo + "',title='" + title + "',";
sql += "englishtitle='" + englishtitle + "',authorcompany='" + authorcompany + "',keyword='" + keyword + "',content='" + content + "',digest='" + digest + "',";
sql += "path='" + path + "',disease='" + disease + "',auditflag=" + auditflag + " where ID= "+id;
int i = SQLHelper.OrlExecuteQuery(sql);
if (i > )
{
System.Windows.Forms.MessageBox.Show("审核通过", "审核信息");
TextIsNull();
this.Close();
TextData td = new TextData();
td.Show();
}
else
{
System.Windows.Forms.MessageBox.Show("审核失败", "审核信息");
}
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
} private void btnback_Click(object sender, RoutedEventArgs e)
{
this.Close();
if (i == )
{
TextData td = new TextData();
td.Show();
}
else {
Index index = new Index();
index.Show();
}
}
}
}

【功能以及操作描述】

  1. 打开主页面可以看到,每条信息前序号的生成,通过后台对事件重写完成,代码如下。

            void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
    this.c1.Children.Add(page1);
    this.Loaded += delegate
    {
    InitData();
    };
    dataGrid1.LoadingRow += new EventHandler<DataGridRowEventArgs>(dataGrid1_LoadingRow);
    }
    void dataGrid1_LoadingRow(object sender, DataGridRowEventArgs e)
    {
    e.Row.Header = e.Row.GetIndex() + ; //设置行表头的内容值
    }

      

  2. 页面自动显示为分页显示,通过用户控件进行分页,然后对数据控件进行绑定,详细操作见系列二文章。本功能代码如下:
     //查询
    private void InitData()
    {
    string sql = "select * from T_TCM_THESIS where auditflag=1 order by ID desc";
    DataSet ds = MYHelper.SQLHelper.GetOrlData(sql);
    if (ds.Tables[].Rows.Count > )
    {
    page1.ShowPages(this.dataGrid1, ds, );
    }
    else
    {
    System.Windows.Forms.MessageBox.Show("Erroy");
    }
    }
  3. 点击详细信息按钮,跳转的详细信息页面。如何获取DataGrid主键是关键,具体实现为:
                this.Hide();
    DataRowView mySelectedElement = (DataRowView)dataGrid1.SelectedItem;
    int ID = Convert.ToInt32((mySelectedElement.Row[])); //获取该行的FID
    falg f = new falg(ID,);
    f.Show();
  4. 在目标页面,通过页面接受页面传值,显示到详细信息。
     private void THESIS(int id)
    {
    string sql = "select * from T_TCM_THESIS where id="+id; DataTable dt = MYHelper.SQLHelper.GetTabOrlData(sql);
    if (dt.Rows.Count>)
    {
    txtdocname.Text = dt.Rows[]["docname"].ToString();
    txtauthor.Text = dt.Rows[]["author"].ToString();
    txtcompany.Text = dt.Rows[]["authorcompany"].ToString();
    txtcontent.Text = dt.Rows[]["content"].ToString();
    txtdigest.Text = dt.Rows[]["digest"].ToString();
    txtdisease.Text = dt.Rows[]["disease"].ToString();
    txtdoctype.Text = dt.Rows[]["doctype"].ToString();
    txtenglishtitle.Text = dt.Rows[]["englishtitle"].ToString();
    txtkeyword.Text = dt.Rows[]["keyword"].ToString();
    txtmemo.Text = dt.Rows[]["memo"].ToString();
    txtpath.Text = dt.Rows[]["path"].ToString();
    txtsource.Text = dt.Rows[]["source"].ToString();
    txtsourcetype.Text = dt.Rows[]["sourcetype"].ToString();
    txtsummary.Text = dt.Rows[]["summary"].ToString();
    txttitle.Text = dt.Rows[]["title"].ToString();
    txtyears.Text = dt.Rows[]["years"].ToString();
    int flag =Convert.ToInt32(dt.Rows[]["auditflag"].ToString());
    if (flag == )
    {
    cbflag.IsChecked = true;
    }
    else
    {
    cbflag.IsChecked = false;
    }
    }
    }
  5. 审核页面的具体操作也是类似, 不同之处在于对传值页面进行逻辑判断,如果是审核则允许页面信息的更新,如果查看详细信息,则更新按钮隐藏。

【篇末】:截止到此,本程序完全结束,本章涉及页面传值和数据绑定等基本信息,这方面大体与winfrom操作一致。本程序采用讲涉及的知识点数十个,均一一列出整理。数据库sql文件在项目的db文件夹中,附上完整源码如下:

注:源码地址链接总是不正确,后来打开管理--〉文件,查看源码,找到本文件的链接地址粘贴即可。

 

【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核的更多相关文章

  1. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  2. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  3. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  4. EasyPR--一个开源的中文车牌识别系统

    我正在做一个开源的中文车牌识别系统,Git地址为:https://github.com/liuruoze/EasyPR. 我给它取的名字为EasyPR,也就是Easy to do Plate Reco ...

  5. 基于tensorflow的MNIST手写数字识别(二)--入门篇

    http://www.jianshu.com/p/4195577585e6 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型 基于tensorflow的MNIST手写数字识 ...

  6. python智能图片识别系统(图片切割、图片识别、区别标识)

    @ 目录 技术介绍 运行效果 关键代码 写在最后 技术介绍 你好! python flask图片识别系统使用到的技术有:图片背景切割.图片格式转换(pdf转png).图片模板匹配.图片区别标识. 运行 ...

  7. 用Python做了个图片识别系统(附源码)

    本项目将使用python3去识别图片是否为色情图片,会使用到PIL这个图像处理库,并且编写算法来划分图像的皮肤区域 介绍一下PIL: PIL(Python Image Library)是一种免费的图像 ...

  8. 图片管够!用Python做了个图片识别系统(附源码)

    本项目将使用python3去识别图片是否为色情图片,会使用到PIL这个图像处理库,并且编写算法来划分图像的皮肤区域 介绍一下PIL: PIL(Python Image Library)是一种免费的图像 ...

  9. 基于MFC开发的指纹识别系统.

    MFC-FingerPrint 基于MFC开发的指纹识别系统. 效果图如下: 在第12步特征入库中,会对当前指纹的mdl数据与databases中所有的mdl进行对比,然后返回识别结果. 一.载入图像 ...

随机推荐

  1. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

  2. Docker 第一篇--初识docker

    已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...

  3. PHP验证用户登录例子-学习笔记

    1.基本流程: 2.UML类图: 3.PHP代码: 3.1 index.php <?php /** * Created by PhpStorm. * User: andy * Date: 16- ...

  4. DBA成长路线

    从开发转为数据库管理,即人们称为DBA的已经有好几年,有了与当初不一样的体会.数据是企业的血液,数据是石油,数据是一切大数据.云计算的基础.作为DBA是数据的保卫者.管理者,是企业非常重要的角色.对于 ...

  5. Windos环境用Nginx配置反向代理和负载均衡

    Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...

  6. GJM : C#设计模式(1)——单例模式

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  7. 安卓客户端a标签长按弹框提示解决办法

    昨天工作时候发现一个bug,是关于a标签的,在安卓客户端中,如果是a标签的话,长按会出现一个弹框,如图所示 是因为安卓客户端的长按触发机制,以后进行wap端开发的时候,如果用到跳转页面尽量不要用a标签 ...

  8. 服务治理要先于SOA

      讲在前面的话: 若企业缺乏对服务变更的控制和规则,那么一个服务在经过几个项目之后,就很有可能被随意更改成多个版本,将来变成什么样更是无法预测.久而久之,降低了服务重用的可能性,提高了服务利用的成本 ...

  9. SQLServer2005创建定时作业任务

    SQLServer定时作业任务:即数据库自动按照定时执行的作业任务,具有周期性不需要人工干预的特点 创建步骤:(使用最高权限的账户登录--sa) 一.启动SQL Server代理(SQL Server ...

  10. 第12章 Linux系统管理

    1. 进程管理 1.1 进程查看 (1)进程简介 进程是正在执行的一个程序或命令(如ls命令也是一个进程),每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源. (2)进程管理的作用 ...