篇一: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. 【AR实验室】ARToolKit之制作自己的Marker/NFT

    0x00 - 前言 看过example后,就会想自己动动手,这里改改那里修修.我们先试着添加自己喜欢的marker/nft进行识别. 比如我做了一个法拉利的marker: 还有网上找了一个法拉利log ...

  2. 前端网络、JavaScript优化以及开发小技巧

    一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...

  3. SQL Server 数据加密功能解析

    SQL Server 数据加密功能解析 转载自: 腾云阁 https://www.qcloud.com/community/article/194 数据加密是数据库被破解.物理介质被盗.备份被窃取的最 ...

  4. ExtJS 4.2 组件介绍

    目录 1. 介绍 1.1 说明 1.2 组件分类 1.3 组件名称 1.4 组件结构 2. 组件的创建方式 2.1 Ext.create()创建 2.2 xtype创建 1. 介绍 1.1 说明 Ex ...

  5. [Egret]优雅的写http

    首先,自从使用链式调用的写法后,就一发不可收拾的喜爱上了这种优雅的方式.不管是写架构还是写模块,我都会不自觉的使用这种最优雅的方式.链式写法既减少了代码量,又非常优雅的. 在使用 egret 的htt ...

  6. [算法]——快速排序(Quick Sort)

    顾名思义,快速排序(quick sort)速度十分快,时间复杂度为O(nlogn).虽然从此角度讲,也有很多排序算法如归并排序.堆排序甚至希尔排序等,都能达到如此快速,但是快速排序使用更加广泛,以至于 ...

  7. 微信小程序开发日记——高仿知乎日报(上)

    本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...

  8. iOS开源项目周报1215

    由OpenDigg 出品的iOS开源项目周报第一期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. PY ...

  9. 【MySql】查询数据库中所有表及列的信息

    SELECT TABLE_NAME, -- 表名 COLUMN_NAME, -- 字段名 DATA_TYPE, -- 字段类型 COLUMN_COMMENT -- 字段注释 FROM INFORMAT ...

  10. 关于javascript中的this关键字

    this是非常强大的一个关键字,但是如果你不了解它,可能很难正确的使用它. 下面我解释一下如果在事件处理中使用this. 首先我们讨论一下下面这个函数中的this关联到什么. function doS ...