如何把表格做成源代码_他来了,他来了,文字、表格、公式图片识别神器V0.1测试版...

他来了,他来了,Mathpix拜拜了~~~

文字、表格、公式图片识别神器V0.1测试版

俺不是标题党!!!

开发背景

日常工作中经常遇到大量的图片版文本、表格、公式需要编辑;

用手敲?也太OUT了吧,好歹咱也是个Python全栈。

2018年就开始比较各大厂的文字识别API,

BAT+H,4家的文字识别相差无几,

表格识别,百度遥遥领先,如果给百度90分,其他3家是不及格的。

很长一段时间,没有找到能够替代Mathpix这个歪果产品,

从github找到tensorflow的源代码,可惜功力不够,无法逆向。

这不,本已放弃了自己搞公式识别,

采用InftyReader.exe这个日本软件配合美帝的Mathpix,

勉强可以免费识别日常的工作量。

2020年4月,无意中发现百度终于开放了公式识别的API,

也不知道和我去年在百度的留言是否有关(当时鄙视了一下大厂的AI技术不接地气)。

开发过程

2020年之前一直在用百度的文字识别API,

当然,只是在Jupyter中仅供自己使用,

也曾想过做成微信小程序,但看着微信小程序中琳琅满目的同型产品,

还是果断的放弃了!

如今百度公式识别的API出来了,竟让我又燃起做一个小工具的想法,

拿起键盘就是个干!

哼哧,哼哧的撸了200来行代码,测试了十来次,大体可行:

c2ce49e5f9c0c3066ef177e1b56e3a28.png

好久不用tkinter做win桌面应用,还是遇到了不少BUG,

不过,相较于后面打包遇到的BUG,前端UI都不是个事,

具体体现在:

1.conda这个奇葩虽然生猛,但是用Pyinstaller打包,一个小小的工具,竟然300M。

2.重新安装一个版本的Python,新建虚拟环境,结果约到pip不能升级的问题。

3.再次打包,遇到Pyinstaller打包报错Failed to execute script pyi_rth_pkgres。

4.都懒得改应用的图标了,测试版就先这样吧。毕竟它实现了既定的3个识别功能。

下载链接:

链接:https://pan.baidu.com/s/1N1qu3teQZunA55eCkejGdw 提取码: saph

BUG参考文档:

解决Python 3.6使用pip时Unable to locate finder for pip._vendor.distlib的问题​

Pyinstaller打包报错Failed to execute script pyi_rth_pkgres

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

离线登陆_iphone手机,苹果手机如何登陆网易163邮箱

在使用iPhone系统邮箱的时候,我们在配置的时候可能会遇到各种各样的问题,导致无法在系统邮件里面使用163邮箱。主要是手机客户端的密码和网页登陆的密码是不一样的。常见问题下面就是有人在使用的时候遇到的问题:登陆密码错误有人知道怎么在i…

Vue 封装echarts饼状图(Pie)组件

目的&#xff1a;减少重复代码&#xff0c;便于维护 效果显示&#xff1a; 组件代码 <template><div class"ldw-data-content-box"><div class"ldw-chilren-box"><div class"title"><div>{{ title }}</div>…

积分上下限无穷_数学分析|第九章 定积分利用等价无穷小量和定积分定义解决数列极限问题总结...

当公式或文字展示不完全时&#xff0c;记得向左←滑动哦&#xff01;摘要&#xff1a; 当我们利用等价无穷小量时&#xff0c;不仅仅可以利用等价替换&#xff0c;有的时候我们需要利用极限的定义语言来解决问题&#xff0c;当等价无穷小量和连加数列结合在一起时&#xff0c;虽…

关于配置Webapck的 exclude 不过滤 node_modules Babel却没有处理转换node_modules的源码

最近对公司的项目引入了 nanoid 替换 uuid 的使用。但是在sentry日志中发现Unexpected token >的错误。立马查看编译后bunld发现 nanoid 箭头函数没有被转换。所以对此记录一下原因和解决办法。 报错的原因 1.nanoid 源码是没有经过babel转换的。 查看nanoid的源码&#x…

android 贝塞尔曲线_OpenGL 实践之贝塞尔曲线绘制

说到贝塞尔曲线&#xff0c;大家肯定都不陌生&#xff0c;网上有很多关于介绍和理解贝塞尔曲线的优秀文章和动态图。以下两个是比较经典的动图了。二阶贝塞尔曲线&#xff1a;三阶贝塞尔曲线&#xff1a;由于在工作中经常要和贝塞尔曲线打交道&#xff0c;所以简单说一下自己的…

Node.js Event loop 图解

直接上自己制作的流程图

支持串行隔离级别_从0到1理解数据库事务(上):并发问题与隔离级别

最近准备写一篇关于Spanner事务的分享&#xff0c;所以先分享一些基础知识&#xff0c;涉及ACID、隔离级别、MVCC、锁&#xff0c;由于太长&#xff0c;只好拆分成上下两篇&#xff1a;上&#xff1a;并发问题与隔离级别主要讲事务所要解决的问题、思路&#xff0c;先理解为什么…

如何发布接口_Devops下的接口全生命周期管理与测试

什么是devops&#xff1f;随着时间的推移&#xff0c;devops的定义也在不断的演进。对于其定义可能出现千人千面&#xff0c;但从核心观点&#xff0c;整体业界还是保持着一致的认识。DevOps不是单一的技术或者工具&#xff0c;甚至不只是一个流程&#xff0c;而是包含应用设计…

查看mysql日志post_(转)MySQL 日志组提交

原文:https://jin-yang.github.io/post/mysql-group-commit.html组提交 (group commit) 是为了优化写日志时的刷磁盘问题&#xff0c;从最初只支持 InnoDB redo log 组提交&#xff0c;到 5.6 官方版本同时支持 redo log 和 binlog 组提交&#xff0c;大大提高了 MySQL 的事务处…

like语句太慢 sqlserver_SQLServer找出执行慢的SQL语句

SELECT(total_elapsed_time / execution_count)/1000 N平均时间ms,total_elapsed_time/1000 N总花费时间ms,total_worker_time/1000 N所用的CPU总时间ms,total_physical_reads N物理读取总次数,total_logical_reads/execution_count N每次逻辑读次数,total_logical_reads N逻辑…

苹果cms10自适应模板_哪里有苹果cms10自适应模板?

1&#xff0c;苹果CMSv10大图轮播高端大气自适应视频网站模板源码苹果cms10自适应模板下载地址&#xff1a;https://www.mytheme.cn/maccms/54.html第一款大图宽屏的海报轮播幻灯样式&#xff0c;宽屏模板支持DIY扩展自适应影视模板苹果cms10自适应模板苹果cms10自适应模板2&am…

python实现进程通信_python进程间的通讯实现

1&#xff1a;进程间通讯的方法&#xff1a;apply_async()非阻塞式通讯 apply()阻塞式通讯2&#xff1a;使用Queue实现对Process创建的进程间通讯&#xff0c;Queue本身是一个消息队列程序&#xff0c;Queue常用方法&#xff1a;Queue.qsize():返回当前消息队列的消息数量Q…

vscode php formatter mac配置_Mac上配置Vs code时,遇到的几个“坑”!

在写一些简单的程序时&#xff0c;你喜欢用什么编译器呢&#xff1f;之前我一直用的是sublime&#xff0c;它打开的速度快&#xff0c;占用的内存小。但是有个麻烦的地方&#xff0c;配置的时候要花一些时间&#xff0c;如果你的网不好还时不时给你来个timeout。最近在Youtube上…

模为2的逆元是什么_两种求模m逆元的方法

在a|b(a能整除b)的前提下&#xff0c;计算(b/a)mod m的时候转化为 计算(b*x)mod m ; 这时的x就是a的逆元(a模m的逆元)&#xff1b;此时x满足 (a*x mod m 1)&#xff1b; 这个x的求法有一下两种&#xff1a;1)扩展欧几里得算法求解 a*xm*y1; 因为 a*x mod m 1 <> a…

java值栈_Struts2 中的值栈是什么?

7.1值栈7.1.1值栈是什么简单的说&#xff1a;值栈是对应每一个请求对象的轻量级的内存数据中心。Struts2中一个很激动人心的特性就是引入了值栈&#xff0c;在这里统一管理着数据&#xff0c;供Action、Result、Interceptor等Struts2的其他部分使用&#xff0c;这样一来&#x…

java try的用法_Java中try、catch的使用方法

Java中有两种处理异常的方式&#xff0c;分别是用throws抛出异常、用try、catch捕获异常。try-catch在Javatry-catch语句的语法格式&#xff1a;try{//代码块}catch(Exception1 e){//抛出异常后所要进行的操作}当try语句当中捕获到异常时&#xff0c;会将异常抛出到catch语句中…

java not a jpeg file_javax.imageio.IIOException: Not a JPEG file: starts with 0x47 0x49

java处理图片时出现异常javax.imageio.IIOException: Not a JPEG file: starts with 0x47 0x49at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImageHeader(Native Method)at com.sun.imageio.plugins.jpeg.JPEGImageReader.readNativeHeader(Unknown Source)at com.sun…

java if用法_java中if语句的写法

if语句if 语句的语法如下&#xff1a;if(布尔表达式){//如果布尔表达式为true将执行的语句}如果布尔表达式的值为 true&#xff0c;则执行 if 语句中的代码块&#xff0c;否则执行 if 语句块后面的代码。免费视频教程推荐&#xff1a;java视频教程if...else语句if 语句后面可以…

java子类和父类实例_java中父类与子类之间的转换示例

java中父类与子类之间的转换示例有以下三点&#xff1a;示例一父类强制转子类pre class"brush:php;toolbar:false">Father f new Son();Son s (Son)f;//可以创建一个父类的实例&#xff0c;想要强制把父类对象转换成子类的&#xff0c;不行&#xff01;通俗的想…

java 原子类能做什么_死磕 java原子类之终结篇(面试题)

概览原子操作是指不会被线程调度机制打断的操作&#xff0c;这种操作一旦开始&#xff0c;就一直运行到结束&#xff0c;中间不会有任何线程上下文切换。原子操作可以是一个步骤&#xff0c;也可以是多个操作步骤&#xff0c;但是其顺序不可以被打乱&#xff0c;也不可以被切割…