前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >巧用腾讯云OCR--图片组成的PDF也能构建知识库 | 技术创作特训营第一期

巧用腾讯云OCR--图片组成的PDF也能构建知识库 | 技术创作特训营第一期

原创
作者头像
AIOPS
修改2023-08-27 11:19:06
8671
修改2023-08-27 11:19:06
举报
文章被收录于专栏:高可用高可用

一、 引言

随着数字化时代的到来,OCR(光学字符识别)技术在各行各业中的应用越来越广泛,如金融、医疗、教育等领域。然而,图片组成的PDF文件识别一直以来都是OCR技术的难点。腾讯云OCR技术凭借其领先的识别能力,可以快速准确地识别图片PDF文件。结合openai接口,我们可以将识别结果构建成知识库,为用户提供更高效便捷的服务。本文将以滴滴出行的行程单为例,展示腾讯云OCR技术在实际应用中的优势。

二、腾讯云OCR技术介绍

腾讯云OCR技术是一款基于深度学习的图像识别技术,具有以下核心功能和优势:

高精度识别:腾讯云OCR技术采用先进的深度学习算法,能够准确识别不同场景下的文字信息。

多语言支持:支持中文、英文、日文、韩文等多种语言的识别。

强大的PDF文件识别能力:腾讯云OCR技术能够应对图片PDF文件识别的挑战,准确提取图片中的文字信息。

通过腾讯云OCR技术,我们可以轻松地识别滴滴出行的行程单,获取其中的关键信息,如行程时间、起点、终点、金额等。

三、腾讯云OCR技术的开通

3.1 开通文字识别服务

在使用腾讯云 AI 文字识别之前,通过腾讯云 OCR 登录 - 腾讯云 开通文字识别服务。

服务开通成功后,腾讯云AI文字识别赠送了免费的资源包,共享1000次的免费额度,可以在资源包管理页面查看资源包使用情况。

另外,还可以在 登录 - 腾讯云 开通后付费服务,这样就不用担心资源包耗尽导致调用接口失败了,但是后付费设置每月只能变更一次。

3.2 控制台监控信息

经过使用了解到所有文字识别服务的使用情况都可以在 登录 - 腾讯云 中查看使用信息,可以从下图看到统计出当前月份的调用情况、计费情况、成功数、成功率等。

3.3 编程环境准备

3.3.1 获取个人密钥

在腾讯云访问管理的 登录 - 腾讯云,我们新建一个个人密钥。

复制生成的密钥,可以 登录 - 腾讯云 可直达。

3.3.2 查看高精度文字识别API

可以在 登录 - 腾讯云 中选择文字识别服务—混贴票据识别—输入参数—选择需要的语言—即可生成对应语言的 API 调用代码。

3.3.3 构建开发环境

一般开发python的IDE即可,主要是依赖包的安装

代码语言:javascript
复制
import json, PyPDF2, io, base64
from pdf2image import convert_from_path
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.ocr.v20181119 import ocr_client, models
from langchain import PromptTemplate
from langchain.chat_models import ChatOpenAI
from langchain.chains import LLMChain

四、 应用实践

4.1 识别PDF文本内容

调用高精度版通用印刷体识别API,并处理文本内容。

代码如下:

代码语言:javascript
复制
def pdf_to_text(pdf_file):
    # 读取PDF文件
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    print(pdf_reader.pages)
    num_pages = len(pdf_reader.pages)

    # 实例化一个认证对象
    SecretId = "XXXX"
    SecretKey = " XXXX"
    cred = credential.Credential(SecretId, SecretKey)
    httpProfile = HttpProfile()
    httpProfile.endpoint = "ocr.tencentcloudapi.com"
    clientProfile = ClientProfile()
    clientProfile.httpProfile = httpProfile
    client = ocr_client.OcrClient(cred, "ap-shanghai", clientProfile)

    # 处理每一页
    result_text = []
    for page_num in range(num_pages):
        images = convert_from_path(pdf_file, first_page=page_num+1, last_page=page_num+1)
        if images:
            image = images[0]
            buffer = io.BytesIO()
            image.save(buffer, format='JPEG')
            img_base64 = base64.b64encode(buffer.getvalue()).decode('utf-8')

            req = models.GeneralAccurateOCRRequest()
            params = {
                "ImageBase64": img_base64
            }
            req.from_json_string(json.dumps(params))

            try:
                resp = client.GeneralAccurateOCR(req)
                text = "\n".join([item.DetectedText for item in resp.TextDetections])
                result_text.append(text)
            except TencentCloudSDKException as err:
                print(f"Error in page {page_num}: {err}")

    return "\n".join(result_text)

运行脚本,获取如下处理结果:

4.2 构建请求Open AI的方法

借助langchain,快速构建通用请求OpenAI的方法,代码如下:

代码语言:javascript
复制
def req_chat(question, prompt):
    llm = ChatOpenAI(openai_api_key=api_key, temperature=0.5, model_name='gpt-3.5-turbo')
    chain = LLMChain(llm = llm, prompt = prompt)
    
    return chain.run(question)

def gen_ret(pdf_text, prompt_template):
    prompt = PromptTemplate(
        input_variables=["text"],
        template=prompt_template,
    )

    rep = req_chat(pdf_text, prompt)

    return rep

4.3 应用一:总结

根据4.1、4.2成果,构建总结prompt,实验返回结果。prompt及调用如下:

代码语言:javascript
复制
summarize_template = """
    请总结下面三个反引号引起来的内容
    ```{text}```
    """
pdf_text = pdf_to_text(pdf_file)
print(gen_ret(pdf_text, summarize_template))

AI返回结果如下:

从结果来看,总结的很到位

4.4 应用二:提取指定信息

根据4.1、4.2成果,构建总结prompt,实验返回结果。prompt及调用如下:

代码语言:javascript
复制
order_template = """
    从下面三个反引号引起来的内容,提取订并输出一个表格
    ```{text}```
    """
pdf_text = pdf_to_text(pdf_file)
print(gen_ret(pdf_text, order_template))

AI返回结果如下:

从结果来看,提取指定信息也不在话下。

五、总结

通过上面实践,发现腾讯云OCR技术在图片PDF文件识别方面具有显著优势,提供了高效便捷的服务。

通过这个服务,我们将原来没办法处理的文件,快速转变成文本文件、助力我们快速构建自己的私有知识库。如果你对本方案感兴趣,欢迎和我讨论

【选题思路】

用过AIGC后发现,你越来越离不开它。AIGC的优势在于高效生产多样化的内容,节省时间成本。使用AIGC可以提升创造力,满足不同需求,加速内容创作,拓展创意边界,助力创新发展。

日常工作,积累了不少图片组成的PDF书籍,如何快速阅读、检索这些书籍,是一个了非常大的挑战。能顺利解决,对学习、工作效率提升很大。基于这些痛点,创作了本文。

【创作提纲】

1、介绍图片PDF问题及痛点

2、介绍腾讯云OCR技术

3、快速开通的方法

4、应用实践:基于大模型的总结及信息抽取

5、总结展望

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 引言
  • 二、腾讯云OCR技术介绍
  • 三、腾讯云OCR技术的开通
    • 3.1 开通文字识别服务
      • 3.2 控制台监控信息
        • 3.3 编程环境准备
          • 3.3.1 获取个人密钥
          • 3.3.2 查看高精度文字识别API
          • 3.3.3 构建开发环境
      • 四、 应用实践
        • 4.1 识别PDF文本内容
          • 4.2 构建请求Open AI的方法
            • 4.3 应用一:总结
              • 4.4 应用二:提取指定信息
              • 五、总结
              • 【选题思路】
              • 【创作提纲】
              相关产品与服务
              AI 应用产品
              文字识别(Optical Character Recognition,OCR)基于腾讯优图实验室的深度学习技术,将图片上的文字内容,智能识别成为可编辑的文本。OCR 支持身份证、名片等卡证类和票据类的印刷体识别,也支持运单等手写体识别,支持提供定制化服务,可以有效地代替人工录入信息。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档