Foxtable(狐表)用户栏目专家坐堂 → 关于读取PDF文件的问题2


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

主题:关于读取PDF文件的问题2

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


加好友 发短信
等级:一尾狐 帖子:470 积分:3166 威望:0 精华:0 注册:2011/3/15 12:49:00
关于读取PDF文件的问题2  发帖心情 Post By:2024/12/18 12:29:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:问题代码.txt

这个是我写的PDF读取的代码


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


我想把图片中圈出的文本变成一行(如下图所示)请问怎么写这个代码


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




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


加好友 发短信
等级:一尾狐 帖子:470 积分:3166 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2024/12/18 14:37:00 [显示全部帖子]

dim s as string = "解析出来的文本"
s = s.replace(vbcrlf & "(","(").replace(")" & vbcrlf,")")
这个不行,首先并不知道是什么字符后或前换行,第二点有时是三行怎么办?

二楼的碾作尘可以分享一下你做识别fa piao的经验和代码吗?

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


加好友 发短信
等级:一尾狐 帖子:470 积分:3166 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2024/12/18 15:03:00 [显示全部帖子]

规律其实也有,就是vbcrlf &“*”,到下一组vbcrlf &“*”,常规fa piao就是8列数据,由空格隔开的
也就是有几个vbcrlf &“*”,就有几行数据
[此贴子已经被作者于2024/12/18 15:05:11编辑过]

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


加好友 发短信
等级:一尾狐 帖子:470 积分:3166 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2024/12/18 15:09:00 [显示全部帖子]

不会,写一个例子看看吧

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


加好友 发短信
等级:一尾狐 帖子:470 积分:3166 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2024/12/18 16:57:00 [显示全部帖子]

唯一算规律的只有vbcrlf &“*”和这个后7个空格

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


加好友 发短信
等级:一尾狐 帖子:470 积分:3166 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2024/12/19 0:21:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:问题代码.txt
请问用AI百度云的话这个代码怎么写,实在看不懂

内部函数
GetAccessToken

Static CreateTime As Date '记录最近一次生成access_token的时间  
Static AccessTocken As String '记录最近一次生成的access_token  
Dim tp As TimeSpan = Date.Now - CreateTime  
If tp.TotalSeconds > 2500000 Then  
    Dim hc As New HttpClient("https://aip.baidubce.com/oauth/2.0/token")
    hc.FormData.Add("grant_type", "client_credentials") 
    hc.FormData.Add("client_id",Vars("APIKey"))  
    hc.FormData.Add("client_secret",Vars("SecretKey"))  
    Dim ret As String = hc.GetData()  
    If ret = "" Then '如果失败,再尝试一次  
        ret = hc.GetData()  
    End If  
    CreateTime = Date.Now()  
    Dim jo As JObject = JObject.Parse(ret)  
    If jo("access_token") IsNot Nothing Then  
        AccessTocken = jo("access_token")  
    Else  
        MessageBox.show("获取access_token失败,原因:" & vbcrlf & jo("error_description").ToString)  
    End If  
End If  
Return AccessTocken

按键代码
Dim dlg As New OpenFileDialog
dlg.Filter = "图像文件|*.pdf"
dlg.InitialDirectory = ProjectPath
If dlg.ShowDialog = DialogResult.Ok Then
    Dim txt As WinForm.TextBox = e.Form.Controls("TextBox1")
    txt.Text = "使用图像文件: " & dlg.FileName
    Try
        Dim client As new Baidu.Aip.Ocr.Ocr(Vars("APIKey"), Vars("SecretKey")) '初始化接口类,传入创建的应用的API Key,Secret Key
        client.Timeout = 60000 '设置超时时间
        Dim data() As Byte = System.IO.File.ReadAllBytes(dlg.FileName) '把图片文件字节流加载进来,
        Dim d As String = Convert.ToBase64String(data)
        Dim options As New Dictionary(Of String, Object) '使用字典传递参数
        options.Add("Content-Type", "application/x-www-form-urlencoded")
        options.add("pdf_file", d)
        Dim result = client.VatInvoicePdf(data, options) '调用接口开始识别,返回值为JObject对象
        If result("error_code") IsNot Nothing AndAlso result("error_code") <> 0 Then
            txt.text = "识别失败: " & vbcrlf & result("error_msg").Tostring
        Else
            txt.text = txt.text & vbcrlf & "--------************-----------"
            txt.text = txt.text & vbcrlf & "识别出" & result("words_result_num").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
        End If
    Catch ex As exception
        txt.text = txt.text & vbcrlf & "识别接口调用失败,错误描述: " &  vbcrlf & ex.message
    End try
End If
求助改一下代码

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



[此贴子已经被作者于2024/12/19 1:07:57编辑过]

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


加好友 发短信
等级:一尾狐 帖子:470 积分:3166 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2024/12/19 13:17:00 [显示全部帖子]

Dim dlg As New OpenFileDialog
dlg.Filter = "图像文件|*.jpg;*.jpeg;*.png;*.bmp;*.pdf"
dlg.InitialDirectory = ProjectPath
If dlg.ShowDialog = DialogResult.Ok Then
    
    Dim txt As WinForm.TextBox = e.Form.Controls("TextBox1")
    txt.Text = "使用图像文件: " & dlg.FileName
    Dim pic1 As WinForm.WebBrowser = e.Form.Controls("WebBrowser1")
    pic1.OfficeToolBar = True
    pic1.Address = dlg.FileName
    Try
        Dim client As new Baidu.Aip.Ocr.Ocr(Vars("APIKey"), Vars("SecretKey")) '初始化接口类,传入创建的应用的API Key,Secret Key
        client.Timeout = 60000 '设置超时时间
        Dim data() As Byte = System.IO.File.ReadAllBytes(dlg.FileName) '把图片文件字节流加载进来,
        Dim d As String = Convert.ToBase64String(data)
        Dim options As New Dictionary(Of String, Object) '使用字典传递参数
        options.Add("Content-Type", "application/x-www-form-urlencoded")
        options.Add("detect_direction", "true") '是否检测图像朝向,默认不检测
        options.add("Accept", "application/json")
        options.Add("seal_tag", "false")
'        options.add("pdf_file", d)
        Dim result = client.VatInvoicePdf(data, options) '调用接口开始识别,返回值为JObject对象
        If result("error_code") IsNot Nothing AndAlso result("error_code") <> 0 Then
            txt.text = "识别失败: " & vbcrlf & result("error_msg").Tostring
        Else
            txt.text = txt.text & vbcrlf & "--------************-----------"
            txt.text = txt.text & vbcrlf & "识别出" & result("words_result_num").Tostring & "个句子/短语:"
            txt.text = txt.text & vbcrlf & result.Tostring
        End If
'                txt.text = txt.text & vbcrlf & "识别结果: " & vbcrlf & result.Tostring
    catch ex As exception
        txt.text = txt.text & vbcrlf & "识别接口调用失败,错误描述: " &  vbcrlf & ex.message
    End try
End If

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

上午还可用怎么现在不能用了?求解


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


加好友 发短信
等级:一尾狐 帖子:470 积分:3166 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2024/12/19 15:23:00 [显示全部帖子]

使用图像文件: H:\dzfp_23312000000047796094_20230729130121.pdf
识别接口调用失败,错误描述: 
String 引用没有设置为 String 的实例。
参数名: s

还是这样为什么?

Dim dlg As New OpenFileDialog
dlg.Filter = "图像文件|*.pdf"
dlg.InitialDirectory = ProjectPath
If dlg.ShowDialog = DialogResult.Ok Then   
    Dim txt As WinForm.TextBox = e.Form.Controls("TextBox1")
    txt.Text = "使用图像文件: " & dlg.FileName
    Dim pic1 As WinForm.WebBrowser = e.Form.Controls("WebBrowser1")
    pic1.OfficeToolBar = True
    pic1.Address = dlg.FileName
    Try
        Dim client As new Baidu.Aip.Ocr.Ocr(Vars("APIKey"), Vars("SecretKey")) '初始化接口类,传入创建的应用的API Key,Secret Key
        client.Timeout = 60000 '设置超时时间
        Dim data() As Byte = System.IO.File.ReadAllBytes(dlg.FileName) '把图片文件字节流加载进来,
        Dim d As String = Convert.ToBase64String(data)
        Dim options As New Dictionary(Of String, Object) '使用字典传递参数
        options.Add("Content-Type", "application/x-www-form-urlencoded")
        options.Add("detect_direction", "true") '是否检测图像朝向,默认不检测
        options.add("Accept", "application/json")
        options.Add("seal_tag", "false")
        options.add("pdf_file", d)
        Dim result = client.VatInvoicePdf(data, options) '调用接口开始识别,返回值为JObject对象
        txt.text = txt.text & vbcrlf & "识别结果: " & vbcrlf & result.Tostring
        If result("error_code") IsNot Nothing AndAlso result("error_code") <> 0 Then
            txt.text = "识别失败: " & vbcrlf & result("error_msg").Tostring
        Else
            txt.text = txt.text & vbcrlf & "--------************-----------"
            txt.text = txt.text & vbcrlf & "识别出" & result("words_result_num").Tostring & "个句子/短语:"
        End If
    Catch ex As exception
        txt.text = txt.text & vbcrlf & "识别接口调用失败,错误描述: " & vbcrlf & ex.message
    End Try
End If
[此贴子已经被作者于2024/12/19 15:24:26编辑过]

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


加好友 发短信
等级:一尾狐 帖子:470 积分:3166 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2024/12/19 15:39:00 [显示全部帖子]

Dim result = client.VatInvoicePdf(data, options) '调用接口开始识别,返回值为JObject对象
        MessageBox.Show("6")
        txt.text = txt.text & vbcrlf & "识别结果: " & vbcrlf & result.Tostring
        MessageBox.Show("7")
        If result("error_code") IsNot Nothing AndAlso result("error_code") <> 0 Then
            MessageBox.Show("8")
            txt.text = "识别失败: " & vbcrlf & result("error_msg").Tostring
            MessageBox.Show("9")
        Else
            MessageBox.Show("10")
            txt.text = txt.text & vbcrlf & "--------************-----------"
            MessageBox.Show("11")
            txt.text = txt.text & vbcrlf & "识别出" & result("words_result_num").Tostring & "个句子/短语:"
        End If
        MessageBox.Show("12")
    Catch ex As exception

红色的这行代码开始就没有跳MessageBox

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


加好友 发短信
等级:一尾狐 帖子:470 积分:3166 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2024/12/19 16:13:00 [显示全部帖子]

问题是上午好的,下午换了个地方就不行了

 回到顶部
总数 14 1 2 下一页