我正在尝试使用google vision api对我的图片执行OCR。 API调用的Json输出返回带有边界框信息的已识别单词。
有人可以告诉我如何使用此边界框信息对我的图像进行布局分析吗?
如果有一个库将其作为输入并返回句子而不是单词?
{
"description": "Ingredients:",
"boundingPoly": {
"vertices": [
{
"x": 14,
"y": 87
},
{
"x": 53,
"y": 87
},
{
"x": 53,
"y": 98
},
{
"x": 14,
"y": 98
}
]
}
},
{
"description": "Chicken",
"boundingPoly": {
"vertices": [
{
"x": 55,
"y": 87
},
{
"x": 77,
"y": 87
},
{
"x": 77,
"y": 98
},
{
"x": 55,
"y": 98
}
]
}
},
例如在上面的json中,单词' Ingredients:' '鸡'在同一条线上。是否有一个图书馆可以提供开箱即用的信息?
用于OCR source image
的图片答案 0 :(得分:1)
尝试使用Word或任何其他可让您旋转的工具旋转图像。 它在我的案例中得到了正确的答案,我不断阅读行中的所有内容。
答案 1 :(得分:0)
有几个client libraries可用于获取句子而不是单词。 github中也有官方可用的例子。例如,您可以看到here go语言示例文件。 detect.go
包含按块输出文本的下一个函数:
// detectDocumentText gets the full document text from the Vision API for an image at the given file path.
func detectDocumentTextURI(w io.Writer, file string) error {
ctx := context.Background()
client, err := vision.NewImageAnnotatorClient(ctx)
if err != nil {
return err
}
image := vision.NewImageFromURI(file)
annotation, err := client.DetectDocumentText(ctx, image, nil)
if err != nil {
return err
}
if annotation == nil {
fmt.Fprintln(w, "No text found.")
} else {
fmt.Fprintln(w, "Document Text:")
fmt.Fprintf(w, "%q\n", annotation.Text)
fmt.Fprintln(w, "Pages:")
for _, page := range annotation.Pages {
fmt.Fprintf(w, "\tConfidence: %f, Width: %d, Height: %d\n", page.Confidence, page.Width, page.Height)
fmt.Fprintln(w, "\tBlocks:")
for _, block := range page.Blocks {
fmt.Fprintf(w, "\t\tConfidence: %f, Block type: %v\n", block.Confidence, block.BlockType)
fmt.Fprintln(w, "\t\tParagraphs:")
for _, paragraph := range block.Paragraphs {
fmt.Fprintf(w, "\t\t\tConfidence: %f", paragraph.Confidence)
fmt.Fprintln(w, "\t\t\tWords:")
for _, word := range paragraph.Words {
symbols := make([]string, len(word.Symbols))
for i, s := range word.Symbols {
symbols[i] = s.Text
}
wordText := strings.Join(symbols, "")
fmt.Fprintf(w, "\t\t\t\tConfidence: %f, Symbols: %s\n", word.Confidence, wordText)
}
}
}
}
}
return nil
}