Siftrics的Sight API的官方客户端,这是一种文本识别服务

sight-api的Python项目详细描述


此存储库包含官方的Sight APIPython客户机。Sight API是一种文本识别服务。在

快速启动

  1. 安装程序包。在
pip install sight-api

或者

^{pr2}$

等等

  1. Sight dashboard获取API密钥。在
  2. 创建一个客户端,将API密钥传递给构造函数,并识别文本:
import sight_api

client = sight_api.Client('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')

pages = client.recognize(['invoice.pdf', 'receipt_1.png'])

pages如下所示:

[
    {
        "Error": "",
        "FileIndex": 0,
        "PageNumber": 1,
        "NumberOfPagesInFile": 3,
        "RecognizedText": [ ... ]
    },
    ...
]

FileIndex是原始请求的“files”数组中此文件的索引。在

RecognizedText如下所示:

"RecognizedText": [
    {
        "Text": "Invoice",
        "Confidence": 0.22863210084975458
        "TopLeftX": 395,
        "TopLeftY": 35,
        "TopRightX": 449,
        "TopRightY": 35,
        "BottomLeftX": 395,
        "BottomLeftY": 47,
        "BottomRightX": 449,
        "BottomRightY": 47,
    },
    ...
]

结果流式处理

如果在一个.recognize([ ... ])调用中处理多个页面,结果可能会随时间而来,而不是一次全部返回。在

要在结果(pages对象)一出现就访问它们,可以使用一个生成器:

for pages in self.recognizeAsGenerator(['invoice.pdf', 'receipt_1.png']):
    print(pages)

实际上,.recognize([ ... ])是根据该生成器定义的:

class Client:
    ...
    def recognize(self, files):
        ...
        pages = list()
        for ps in self.recognizeAsGenerator(files):
            pages.extend(ps)
        return pages

单词级边界框

client.recognize(files, words=False)有一个参数words,默认为False,但如果设置为True,则返回单词级的边界框,而不是句子级的边界框。在

自动旋转

Sight API可以旋转并返回输入图像,因此大多数识别的文本是竖直的。请注意,此功能是“高级”Sight API的一部分,因此启用此行为的每个页面都按4个页面计费。要启用此行为,请调用recognize函数,并将默认参数autoRotate设置为True

pages = client.recognize(['invoice.pdf'], autoRotate=True)

现在,Base64Image字段将设置在pages的元素中。在

为什么边界框要旋转90度?

有些图像,特别是.jpeg图像,使用EXIF数据格式。此数据格式包含一个元数据字段,指示图像的方向,即在图像查看器中查看图像时,图像是否应旋转90度、180度、水平翻转等。在

这意味着,当您在Chrome、Firefox、Safari或stock Windows和Mac image viewer应用程序中查看这样的图像时,尽管图像的基本像素是以不同的方向编码的,但它仍会显得笔直。在

如果发现边界框相对于图像旋转或翻转,这是因为用于在程序中加载图像的图像解码器遵循EXIF方向,但Sight API会忽略它(反之亦然)。在

Go中所有最流行的图像库,如“image”和github.com/defication/imaging,忽略EXIF方向。您应该确定图像解码器是否遵循EXIF方向,并告诉Sight API执行相同的操作。您可以通过调用recognize函数并将默认参数exifRotate设置为True来告诉Sight API遵守EXIF方向:

pages = client.recognize(['invoice.pdf'], exifRotate=True)

默认情况下,Sight API忽略EXIF方向。在

API官方文档

这是official documentation for the Sight API。在

Apache V2许可证

这段代码是在apachev2.0下授权的。许可证的全文可以在“许可证”文件中找到。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]