From 30c088b90e7b6a25d93cbdad7564ff063e62afd3 Mon Sep 17 00:00:00 2001 From: Nick White Date: Fri, 25 Jan 2019 09:55:55 +0000 Subject: Reorganisation and cleanup --- lib/prob/prob.go | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 lib/prob/prob.go (limited to 'lib/prob/prob.go') diff --git a/lib/prob/prob.go b/lib/prob/prob.go new file mode 100644 index 0000000..0299a96 --- /dev/null +++ b/lib/prob/prob.go @@ -0,0 +1,69 @@ +package prob + +import ( + "io/ioutil" + "path/filepath" + "strconv" + "strings" + + "git.rescribe.xyz/testingtools/lib/line" +) + +func getLineAvg(f string) (float64, error) { + totalconf := float64(0) + num := 0 + + prob, err := ioutil.ReadFile(f) + if err != nil { + return 0, err + } + + for _, l := range strings.Split(string(prob), "\n") { + fields := strings.Fields(l) + + if len(fields) == 2 { + conf, err := strconv.ParseFloat(fields[1], 64) + if err != nil { + continue + } + totalconf += conf + num += 1 + } + } + if num <= 0 { + return 0, nil + } + avg := totalconf / float64(num) + return avg, nil +} + +// Note this only processes one line at a time +func GetLineDetails(probfn string) (line.Details, error) { + var l line.Detail + lines := make(line.Details, 0) + + avg, err := getLineAvg(probfn) + if err != nil { + return lines, err + } + + filebase := strings.Replace(probfn, ".prob", "", 1) + + txt, err := ioutil.ReadFile(filebase + ".txt") + if err != nil { + return lines, err + } + + l.Name = filepath.Base(filebase) + l.Avgconf = avg + l.Text = string(txt) + l.OcrName = filepath.Dir(filebase) + + var imgfn line.ImgPath + imgfn.Path = filebase + ".bin.png" + l.Img = imgfn + + lines = append(lines, l) + + return lines, nil +} -- cgit v1.2.1-24-ge1ad