160 lines
3.6 KiB
Go
160 lines
3.6 KiB
Go
package ipc
|
|
|
|
import (
|
|
document "textualize/core/Document"
|
|
)
|
|
|
|
func serializeBoundingBox(bbox document.ProcessedBoundingBox) ProcessedBoundingBox {
|
|
return ProcessedBoundingBox{
|
|
X0: bbox.X0,
|
|
Y0: bbox.Y0,
|
|
X1: bbox.X1,
|
|
Y1: bbox.Y1,
|
|
}
|
|
}
|
|
|
|
func serializeSymbol(symbol document.ProcessedSymbol) ProcessedSymbol {
|
|
return ProcessedSymbol{
|
|
Text: symbol.Text,
|
|
Confidence: symbol.Confidence,
|
|
BoundingBox: serializeBoundingBox(symbol.BoundingBox),
|
|
}
|
|
}
|
|
|
|
func serialzeWord(word document.ProcessedWord) ProcessedWord {
|
|
var symbols []ProcessedSymbol
|
|
|
|
for _, symbol := range word.Symbols {
|
|
symbols = append(symbols, serializeSymbol(symbol))
|
|
}
|
|
|
|
return ProcessedWord{
|
|
FullText: word.FullText,
|
|
Symbols: symbols,
|
|
Confidence: word.Confidence,
|
|
Direction: word.Direction,
|
|
BoundingBox: serializeBoundingBox(word.BoundingBox),
|
|
}
|
|
}
|
|
|
|
func serializeLine(line document.ProcessedLine) ProcessedLine {
|
|
var words []ProcessedWord
|
|
|
|
for _, word := range line.Words {
|
|
words = append(words, serialzeWord((word)))
|
|
}
|
|
|
|
return ProcessedLine{
|
|
FullText: line.FullText,
|
|
Words: words,
|
|
}
|
|
}
|
|
|
|
func serializeProcessedArea(area document.ProcessedArea) ProcessedArea {
|
|
var lines []ProcessedLine
|
|
|
|
for _, line := range area.Lines {
|
|
lines = append(lines, serializeLine(line))
|
|
}
|
|
|
|
return ProcessedArea{
|
|
Id: area.Id,
|
|
DocumentId: area.DocumentId,
|
|
FullText: area.FullText,
|
|
Lines: lines,
|
|
}
|
|
}
|
|
|
|
func (c *Channel) GetProcessedAreasByDocumentId(id string) []ProcessedArea {
|
|
areas := document.GetProcessedAreaCollection().GetAreasByDocumentId(id)
|
|
|
|
var response []ProcessedArea
|
|
|
|
for _, a := range areas {
|
|
response = append(response, serializeProcessedArea(*a))
|
|
}
|
|
|
|
return response
|
|
}
|
|
|
|
func deserializeBoundingBox(bbox ProcessedBoundingBox) document.ProcessedBoundingBox {
|
|
return document.ProcessedBoundingBox{
|
|
X0: bbox.X0,
|
|
Y0: bbox.Y0,
|
|
X1: bbox.X1,
|
|
Y1: bbox.Y1,
|
|
}
|
|
}
|
|
|
|
func deserializeSymbol(symbol ProcessedSymbol) document.ProcessedSymbol {
|
|
return document.ProcessedSymbol{
|
|
Text: symbol.Text,
|
|
Confidence: symbol.Confidence,
|
|
BoundingBox: deserializeBoundingBox(symbol.BoundingBox),
|
|
}
|
|
}
|
|
|
|
func deserialzeWord(word ProcessedWord) document.ProcessedWord {
|
|
var symbols []document.ProcessedSymbol
|
|
|
|
for _, symbol := range word.Symbols {
|
|
symbols = append(symbols, deserializeSymbol(symbol))
|
|
}
|
|
|
|
return document.ProcessedWord{
|
|
FullText: word.FullText,
|
|
Symbols: symbols,
|
|
Confidence: word.Confidence,
|
|
Direction: word.Direction,
|
|
BoundingBox: deserializeBoundingBox(word.BoundingBox),
|
|
}
|
|
}
|
|
|
|
func deserializeLine(line ProcessedLine) document.ProcessedLine {
|
|
var words []document.ProcessedWord
|
|
|
|
for _, word := range line.Words {
|
|
words = append(words, deserialzeWord((word)))
|
|
}
|
|
|
|
return document.ProcessedLine{
|
|
FullText: line.FullText,
|
|
Words: words,
|
|
}
|
|
}
|
|
|
|
func deserializeProcessedArea(area ProcessedArea) document.ProcessedArea {
|
|
var lines []document.ProcessedLine
|
|
|
|
for _, line := range area.Lines {
|
|
lines = append(lines, deserializeLine(line))
|
|
}
|
|
|
|
return document.ProcessedArea{
|
|
Id: area.Id,
|
|
DocumentId: area.DocumentId,
|
|
FullText: area.FullText,
|
|
Lines: lines,
|
|
}
|
|
}
|
|
|
|
func (c *Channel) RequestAddProcessedArea(area ProcessedArea) ProcessedArea {
|
|
var currentAreaIds []string
|
|
|
|
for _, a := range document.GetProcessedAreaCollection().Areas {
|
|
currentAreaIds = append(currentAreaIds, a.Id)
|
|
}
|
|
|
|
areaAlreadyExists := false
|
|
for _, areaId := range currentAreaIds {
|
|
if area.Id == areaId {
|
|
areaAlreadyExists = true
|
|
}
|
|
}
|
|
|
|
if !areaAlreadyExists {
|
|
document.GetProcessedAreaCollection().AddProcessedArea((deserializeProcessedArea(area)))
|
|
}
|
|
return area
|
|
}
|