Siftrics的Sight API的官方客户端,这是一种文本识别服务
sight-api的Python项目详细描述
此存储库包含官方的Sight APIPython客户机。Sight API是一种文本识别服务。在
快速启动
- 安装程序包。在
pip install sight-api
或者
^{pr2}$等等
- 从Sight dashboard获取API密钥。在
- 创建一个客户端,将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下授权的。许可证的全文可以在“许可证”文件中找到。在
- 项目
标签: