Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vrurg/raku-www-gcloud-api-vision

Google Cloud Vision API for WWW::GCloud
https://github.com/vrurg/raku-www-gcloud-api-vision

Last synced: about 2 months ago
JSON representation

Google Cloud Vision API for WWW::GCloud

Awesome Lists containing this project

README

        

README

hr,
img {
box-sizing: content-box
}
body::after,
body::before,
hr::after,
hr::before {
display: table;
content: ""
}
a,
a:not([href]) {
text-decoration: none
}

hr,
svg:not(:root) {
overflow: hidden
}

img,
table tr {
background-color: #fff
}

pre,
table {
overflow: auto
}

dl,
dl dt,
hr,
pre code,
pre>code,
td,
th {
padding: 0
}

input,
pre code {
overflow: visible
}

pre,
pre code {
word-wrap: normal
}

body {
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
color: #333;
font-family: "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 16px;
line-height: 1.5;
word-wrap: break-word;
width: 820px;
margin: 2em auto;
}

a {
background-color: transparent;
-webkit-text-decoration-skip: objects;
color: #4078c0
}

a:active,
a:hover {
outline-width: 0;
text-decoration: underline
}

h1 {
margin: .67em 0
}

img {
border-style: none;
max-width: 100%
}

h1,
h2 {
padding-bottom: .3em;
border-bottom: 1px solid #eee
}

input {
font: inherit;
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit
}

* {
box-sizing: border-box
}

strong {
font-weight: 600
}

body::after,
hr::after {
clear: both
}

table {
border-spacing: 0;
border-collapse: collapse;
display: block;
width: 100%
}

blockquote {
margin: 0;
padding: 0 1em;
color: #777;
border-left: .25em solid #ddd
}

ol ol,
ul ol {
list-style-type: lower-roman
}

ol ol ol,
ol ul ol,
ul ol ol,
ul ul ol {
list-style-type: lower-alpha
}

dd {
margin-left: 0
}

code {
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace
}

pre {
font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace
}

input {
-webkit-font-feature-settings: "liga" 0;
font-feature-settings: "liga" 0
}

body>:first-child {
margin-top: 0!important
}

body>:last-child {
margin-bottom: 0!important
}

a:not([href]) {
color: inherit
}

blockquote,
dl,
ol,
p,
pre,
table,
ul {
margin-top: 0;
margin-bottom: 16px
}

hr {
background: #e7e7e7;
height: .25em;
margin: 24px 0;
border: 0
}

blockquote>:first-child {
margin-top: 0
}

blockquote>:last-child {
margin-bottom: 0
}

h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 24px;
margin-bottom: 16px;
font-weight: 600;
line-height: 1.25
}

dl dt,
table th {
font-weight: 700
}

h1 code,
h1 tt,
h2 code,
h2 tt,
h3 code,
h3 tt,
h4 code,
h4 tt,
h5 code,
h5 tt,
h6 code,
h6 tt {
font-size: inherit
}

h1 {
font-size: 2em
}

h2 {
font-size: 1.5em
}

h3 {
font-size: 1.25em
}

h4 {
font-size: 1em
}

h5 {
font-size: .875em
}

h6 {
font-size: .85em;
color: #777
}

ol,
ul {
padding-left: 2em
}

ol ol,
ol ul,
ul ol,
ul ul {
margin-top: 0;
margin-bottom: 0
}

li>p {
margin-top: 16px
}

li+li {
margin-top: .25em
}

dl dt {
margin-top: 16px;
font-size: 1em;
font-style: italic
}

dl dd {
padding: 0 16px;
margin-bottom: 16px
}

table td,
table th {
padding: 6px 13px;
border: 1px solid #ddd
}

table tr {
border-top: 1px solid #ccc
}

table tr:nth-child(2n) {
background-color: #f8f8f8
}

code {
padding: .2em 0;
margin: 0;
font-size: 85%;
background-color: rgba(0, 0, 0, .04);
border-radius: 3px
}

code::after,
code::before {
letter-spacing: -.2em;
content: "\00a0"
}

pre>code {
margin: 0;
font-size: 100%;
word-break: normal;
white-space: pre;
background: 0 0;
border: 0
}

pre {
padding: 16px;
font-size: 85%;
line-height: 1.45;
background-color: #f7f7f7;
border-radius: 3px
}

pre code {
display: inline;
max-width: auto;
margin: 0;
line-height: inherit;
background-color: transparent;
border: 0
}

pre code::after,
pre code::before {
content: normal
}

kbd {
display: inline-block;
padding: 3px 5px;
font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
line-height: 10px;
color: #555;
vertical-align: middle;
background-color: #fcfcfc;
border: 1px solid #ccc;
border-bottom-color: #bbb;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #bbb
}

hr {
border-bottom-color: #eee
}


.toc-level-1 .toc-text { padding-left: 1.5em; }
.toc-level-2 .toc-text { padding-left: 2.5em; }
.toc-level-3 .toc-text { padding-left: 3.5em; }
.toc-level-4 .toc-text { padding-left: 4.5em; }
.toc-level-5 .toc-text { padding-left: 5.5em; }
#TOC * { border-width: 0; }
li > p { margin: inherit; }
li > .pod-block-code { margin-top: 16px; }


Table of Contents


1NAME
2SYNOPSIS
3DESCRIPTION
3.1Status
4COPYRIGHT
5LICENSE


NAME


WWW::GCloud::API::Vision - WWW::GCloud implementation of Google Vision API


SYNOPSIS


use v6.e.PREVIEW;

use WWW::GCloud;
use WWW::GCloud::API::Vision;
use WWW::GCloud::API::Vision::Types;

my $gcloud = WWW::GCloud.new;
my $images = $gcloud.vision.images;

my $queue = $images.annotation-queue;
given $queue {
.project("my-project-id");
# Create a new request to OCR-annotate an image. Subsequent calls to .request will queue new requests.
.request(
:file("my-image.ext"), # Can be a PNG, TIFF, GIF.
feature => ( :type(GCVFDocument), :model<builtin/latest> ),
# If several features to be added at once:
# features => [...],
-> $request {
# Here we can do things with the request object itself.
$request.feature(GCVFLogo); # Also search the image for logos.
# If there is something special about the input config...
# $request.set-input-config(...);

# If the image is a multi-page one. .pages is an Array[UInt:D] attribute.
# $request.pages = 1,3;
}
);
}

await $queue
.start
.andthen({
say "Annotate completed."
# .result is an instance of WWW::GCloud::R::Vision::BatchAnnotateImagesResponse
});


DESCRIPTION


This module lacks complete documentation due to me not currently able to write it. Please, see some notes for WWW::GCloud framework. And look into exmaples/ where I tried to provide meaningful code to follow.


Status


This module is pre-beta, pre-anything. It is incomplete and likely not well thought out at places. But it already lets you do a lot with your storages.


If there is anything you need but it is missing then, please, consider implementing it and submitting a PR. Any other approach would barely proces any outcome for what I do apologize!


Either way, this module can be used as a reference implementation for a WWW::GGCloud API.


Do not hesitate to get in touch with me would you need any help. I know it could be annoying when a complex module has little to none docs. I'll do my best to fix the situation. But until then feel free to open an issue in the GitHub repository, even if it's just a question.


COPYRIGHT


(c) 2023, Vadim Belman <[email protected]>


LICENSE


Artistic License 2.0


See the LICENSE file in this distribution.