diff options
Diffstat (limited to 'parse/prob')
-rw-r--r-- | parse/prob/prob.go | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/parse/prob/prob.go b/parse/prob/prob.go new file mode 100644 index 0000000..5a84567 --- /dev/null +++ b/parse/prob/prob.go @@ -0,0 +1,72 @@ +package prob + +import ( + "bufio" + "io/ioutil" + "path/filepath" + "strconv" + "strings" + + "git.rescribe.xyz/testingtools/parse" +) + +// TODO: probably switch to just relying on io.Reader +func getLineAvg(r *bufio.Reader) (float64, error) { + var err error + + totalconf := float64(0) + num := 0 + + err = nil + for err == nil { + var line string + line, err = r.ReadString('\n') + fields := strings.Fields(line) + + if len(fields) == 2 { + conf, converr := strconv.ParseFloat(fields[1], 64) + if converr != nil { + continue + } + totalconf += conf + num += 1 + } + } + if num <= 0 { + return 0, nil + } + avg := totalconf / float64(num) + return avg, nil +} + +// TODO: probably switch to just relying on io.Reader +// Note this only processes one line at a time +func GetLineDetails(name string, r *bufio.Reader) (parse.LineDetails, error) { + var line parse.LineDetail + lines := make(parse.LineDetails, 0) + + avg, err := getLineAvg(r) + if err != nil { + return lines, err + } + + filebase := strings.Replace(name, ".prob", "", 1) + + txt, err := ioutil.ReadFile(filebase + ".txt") + if err != nil { + return lines, err + } + + line.Name = name + line.Avgconf = avg + line.Text = string(txt) + line.OcrName = filepath.Dir(filebase) + + var imgfn parse.ImgPath + imgfn.Path = filebase + ".bin.png" + line.Img = imgfn + + lines = append(lines, line) + + return lines, nil +} |