Foxtable(狐表)用户栏目专家坐堂 → [求助]百度ai通用文字识别怎样自动分段


  共有2883人关注过本帖树形打印复制链接

主题:[求助]百度ai通用文字识别怎样自动分段

帅哥哟,离线,有人找我吗?
天一生水
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1137 积分:11224 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]百度ai通用文字识别怎样自动分段  发帖心情 Post By:2019/10/9 22:05:00 [只看该作者]

蓝老师好!
实例是把每一行添加“vbcrlf”进行连接,用什么方法可以自动分段?

图片点击可在新窗口打开查看此主题相关图片如下:截屏图片.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106017 积分:539172 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/10 10:06:00 [只看该作者]

按什么规则分?

 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1137 积分:11224 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2020/1/17 11:30:00 [只看该作者]

老师好!
下面的代码是按照标点进行的分段。

想利用判断 ja(i)("words").Tostring 最大字符长度,如果本行字符小于这个最大长度,并且尾字符不是句号,逗号等的,就强制换行。这个怎么弄?
谢谢!


......


Dim ja As JArray = result("words_result")
For i As Integer = 0 To ja.Count - 1
    txt.text = txt.text & vbcrlf & ja(i)("words").Tostring
Next
txt.text = "    " & txt.text.replace("。" & vbcrlf  ,"@1" ).replace(":" & vbcrlf  ,"@2" ).replace(";" & vbcrlf  ,"@3" ).replace(vbcrlf  ,"" ).replace("@1" ,"。" & vbcrlf & "    ").replace("@2" ,":" & vbcrlf & "    ").replace("@3" ,";" & vbcrlf & "    ")


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106017 积分:539172 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/17 11:41:00 [只看该作者]

没看懂

如果本行字符小于这个最大长度 -- 如果1个字符也换行?

 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1137 积分:11224 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2020/1/17 13:43:00 [只看该作者]

老师,我是这样想的:

比如满行的字符是28个,其他行的长度与之相比;

如果其他行未达到28(实际再减2个字符,用26)个字符,就强制换行;否则就不换行。

......然后再添加一些其他规则。

我在遍历   ja(i)("words").Tostring  的过程中,怎样获取集合中各个值的最大长度Length呢?就是上边那个28。


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106017 积分:539172 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/17 14:03:00 [只看该作者]

遍历取最大值咯

Dim ja As JArray = result("words_result")
dim max as integer
For i As Integer = 0 To ja.Count - 1
  if max < ja(i)("words").Tostring().length then max = ja(i)("words").Tostring().length
Next
msgbox(max)

 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1137 积分:11224 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2020/2/3 11:43:00 [只看该作者]

蓝老师好!
如图,如果行中出现半角的字母或数字时,计数时会按照全角计算,怎样只计算汉字的数量呢?或者两个半角按一个字符计算。
麻烦蓝老师写个正则的排除代码,谢谢!

Dim ja As JArray = result("words_result")
dim max as integer
For i As Integer = 0 To ja.Count - 1
  if max < ja(i)("words").Tostring().length then max = ja(i)("words").Tostring().length
Next
msgbox(max)


此主题相关图片如下:tt截图未命名.bmp
按此在新窗口浏览图片



[此贴子已经被作者于2020/2/3 11:53:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106017 积分:539172 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/3 12:02:00 [只看该作者]

获取中文字符

Dim pattern As String = "[^\u4e00-\u9fa5]"
Dim txt = "112地方地方好483"
Dim str = System.Text.RegularExpressions.Regex.Replace(txt , pattern ,"")
Output.Show(str)

获取非中文字符

Dim pattern As String = "[\u4e00-\u9fa5]"
Dim txt = "112地方地方好483"
Dim str = System.Text.RegularExpressions.Regex.Replace(txt , pattern ,"")
Output.Show(str)

 回到顶部