# 智能财务系统开发笔记
[TOC]
南川,2021年4月
## 项目概况
### TODO
- [ ] 增加本地上传功能(以对OpenAPI进行测试)
- [ ] 研究mongoose -> swagger的实现
- [ ] **对分类结果与图片的本身标注做对比分析**
- [ ] 进一步解决只识别出部分条目的图片问题(打算先以识别出小于3条的流水类图片着手分析)
- [ ] 进一步解决未分类成功的问题
- [ ] 对详情类图片做进一步的检验(因为这个相较于流水类更难捕捉出错误)
- [ ] 对分类的所有结果进行统计分析
- [ ] 增加对其他类型,例如图片等文件的导入支持(暂无需求)
### Finished
- [x] 解决`react`的热更新问题(已基于`webpack serve`实现)
- [x] 解决`electron`的热更新问题(已基于`electron-reloader`实现)
- [x] 增加对`css`、`less`等文件的导入支持(已基于`style-loader`、`css-loader`、`les-loader`在`webpack`中实现)
- [ ] 修复由于`redux-thunk`导致的`redux`在`createStore`时出现`typescript`警告的问题(这个问题最令我惊奇的是使用`//@ts-ignore`都无法屏蔽……不过本质上是因为`combinedReducers`用到了一个特有`Symbol`叫`$CombinedState`,反正挺蛋疼,我暂时先在`tsconfig.json`配置里把`declaration`和`declarationMap`关了,就没问题了,这个`ts`选项我暂时也用不到。)
- [x] 基于以上对`redux-thunk`的修复,进一步寻找一个优秀的`typescipt`+`redux`的编码约定(目前我把所有的`actionTypes`写在一个文件里,然后在`actions`文件里写同步(直接返回`Action`)或者异步(`thunk`)代码,其中`thunk`不走`reducer`,同时还要把`thunk`中间件放在`logger`中间件的前面。另外,我不再考虑既声明`ActionType`又声明`Action`的问题了,对于`Action`直接使用`AnyAction`(默认自带`type`属性),对于`ActionType`直接使用`switch(action.type as XXActionType)`代码约定,我觉得挺好的。日后再研究其他大佬的代码吧~)
### UI
![image-20210419222746653](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210419_222747_353645-image-20210419222746653.png)
### 链接:
- [MarkShawn2020/finance-steward-GUI: 基于electron、react、redux、webpack、typescript](https://github.com/MarkShawn2020/finance-steward-GUI)
### 框架
- Electron
- React
- Redux
- TypeScript
- Webpack
## 开发日志
### 2021年05月04日
#### `mongoose lean with string type of ObjectId`
官方`lean`描述:
- [Mongoose v5.12.7: Mongoose Tutorials: Faster Mongoose Queries With Lean](https://mongoosejs.com/docs/tutorials/lean.html)
而将`lean`结果中的`ObjectId`转成`string`,可以通过使用以下插件:
- [mongoosejs/mongoose-lean-id: Attach `id` to the results of mongoose queries when using `.lean()`](https://github.com/mongoosejs/mongoose-lean-id)
### 2021年04月23日
- 完成云端数据库的重新安装、配置
### 2021年04月22日 完成代码的重构、初步搭建了API
彻底重构了代码,所有接口均重新统一定义,接口、视图、算法、配置、自动脚本高度模块化。
![image-20210422235233650](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210422_235234_432822-image-20210422235233650.png)
### 2021年04月18日 第一版UI
![image-20210419222746653](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210419_222747_353645-image-20210419222746653.png)
## V0.0.1 概况
按照准确度标准,目前成功分类情况如下,错误率在20%左右:
![image-20210418194124073](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210418_194743_147188-image-20210418194124073.png)
现一一进行错误修复。
### 场景1: 详情页的标题有两行导致序列化失败
![image-20210418194852184](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210418_194852_783611-image-20210418194852184.png)
根据程序识别,另一种有两行(讨论过)的情况,就是当logo里有字的时候,比如如下:
![image-20210418200717576](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210418_200718_218321-image-20210418200717576.png)
所以程序可以设置两条逻辑,即当金额与详情隔着两行的时候,通过判定两行的长度去分析属于哪一类,尤其对于第二类,考虑限制在字数五个以下。
经过如上处理后,已经只有10%左右错误率了。
![image-20210418201149302](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210418_201149_886306-image-20210418201149302.png)
### 场景2 最左边一栏有图标,导致序列化失败或者效果变差
![image-20210418201632617](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210418_201633_242170-image-20210418201632617.png)
根据位置计算:图标位170,图宽965,比例为0.176,以上下浮动2个点算,如果我们发现低于屏幕宽度15%的文字识别,则可以视为非流水解析部分。
![image-20210418202005652](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210418_202006_247303-image-20210418202005652.png)
目前来看,应该没此类问题了,不过错误更多了,应该是发现了之前没发现的错误。目前错误率在15%左右。
![image-20210418203421441](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210418_203422_005338-image-20210418203421441.png)
### 场景3 没截图截全的暂不处理
![image-20210418203400840](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210418_203401_466303-image-20210418203400840.png)
### 场景4 有浮窗的暂不处理(根据之前的讨论,后续没有浮窗问题了)
![image-20210418203605975](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210418_203606_597733-image-20210418203605975.png)
### 场景5 没有交易对象
![image-20210418203730759](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210418_203731_390663-image-20210418203730759.png)
### 场景6 截图不全,这个图其实已经识别出了数字,但是由于没有上面的标题,所以归为了场景5,但其实是用户自己的操作问题,所以这种也不考虑
![image-20210418204423851](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210418_204424_517044-image-20210418204423851.png)
### 场景7 带千分位金额未有效匹配
![image-20210419210009532](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210419_210010_253356-image-20210419210009532.png)
这张图至少暴露了两个问题,一个是有一些字没有匹配,比如“其他”。(下一个场景说明)
另一个就是带千分位金额没有匹配成功。
第二个问题较为简单,可以先处理一下。
第一种问题之后统一处理(比如用聚类)
### 场景8 支付宝的“其他”未成功匹配
![image-20210419210916197](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210419_210916_883573-image-20210419210916197.png)
尽管这个“其他”没有匹配出来让我们很头疼,但是仔细分析,依旧有转机。
可以看到,这张截图里,匹配出来4条,一共6,剩余2条就是“其他”,然后确信度为三分之二,正是4除以6。
造成这样的原因,主要是因为,我们支付宝的匹配依据是日期与金额相距为2,而微信是相距为1,当“其他”未匹配成功时,就被微信模式匹配上了,于是最终出来匹配出4个支付宝、2个微信的局面。
解决的办法也就呼之欲出了,我们对于没有达到百分之百确信度的流水匹配,将他们全部转成支付宝就好。
也许会有误判,但可能性不高,我们可以做如下判断,如果支付宝匹配数大于微信,则将微信部分全部转成支付宝,否则程序报错,我们检查一下。
### 场景9 标题过长,与金额连在了一起,导致识别失效
![image-20210419212328900](https://mark-vue-oss.oss-cn-hangzhou.aliyuncs.com/20210419_212329_582157-image-20210419212328900.png)
我们可
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行! 基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行! 基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行!
资源推荐
资源详情
资源评论
收起资源包目录
基于electron、react、redux、webpack、typescript、express、mongodb的智能财务系统.zip (86个子文件)
project_demo
yarn.lock 302KB
webpack.config.base.js 770B
nodemon.json 90B
tsoa.json 262B
VERSION.txt 6B
yarn-error.log 315KB
src
koa
yarn.lock 13KB
package.json 159B
general
io.ts 1KB
communications.ts 227B
config.ts 509B
utils.ts 165B
index.html 215B
dev.ts 125B
algo
config.ts 234B
parse
parseXQ.ts 4KB
word2token.ts 2KB
utils.ts 798B
parseLS.ts 4KB
core.ts 759B
api
lib
libController.ts 1KB
server.ts 227B
index.ts 1KB
renderer
index.tsx 299B
styles
index.less 273B
ocr.less 130B
base.ts 98B
config.ts 141B
app.tsx 5KB
components
parse
CompShowParsedResult.tsx 935B
ocr
CompShowOcrItems.tsx 714B
CompImgWithOcr.tsx 1KB
redux
lib
types.ts 116B
actions.ts 165B
reducer.ts 873B
store.ts 581B
interface
lib
parse.ts 1KB
basic.ts 357B
ocr.ts 394B
token.ts 1KB
main
config.ts 163B
index.ts 2KB
db
client.ts 490B
lib_parsed.ts 2KB
lib_ocr.ts 2KB
lib_basic.ts 3KB
library.json 3.01MB
readme.md 30KB
webpack.config.renderer.babel.js 1KB
.babelrc 156B
docs
智能财务系统开发笔记V0.0.1.pdf 6.76MB
项目工作表(4月).xlsx 9KB
package.json 3KB
auto_update_version.mark.sh 1KB
build
swagger.json 2KB
routes.js.map 5KB
routes.js 8KB
routes.ts 9KB
test
test_eval
test_eval.js 105B
test_eval_2.ts 311B
test_eval.ts 225B
test_db
test_populdate.ts 1KB
test_fetchMarkTypes.ts 110B
test_fs_walk_efficiency.ts 419B
test_git_commit
test_git.sh 51B
VERSION.txt 6B
test_update_version.sh 80B
auto_update_version.mark.sh 985B
test_update_version_2.sh 67B
sample.txt 28B
test_match.sh 79B
update_version.sh 847B
msg 10B
test_update_version_3.sh 71B
VERSION.txt.bak.txt 9B
test_eWindow.ts 321B
.gitignore 94B
tsconfig.json 1KB
babel_register.js 120B
scripts
clear_non-ts-files.ts 1010B
init_lib
init_lib_parse.ts 808B
init_lib_base.ts 788B
init_lib_ocr.ts 1KB
gen_const_types
zfb_status.txt 310B
temp.ts 1KB
run.ts 1KB
共 86 条
- 1
资源评论
白话机器学习
- 粉丝: 8266
- 资源: 7686
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功