[FFmpeg-cvslog] avfilter/vf_ocr: also export confidence of result
Paul B Mahol
git at videolan.org
Fri May 17 20:10:26 EEST 2019
ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Fri May 17 19:00:47 2019 +0200| [96c79d4e1fd87dbedfd70ed876ee257ddda2ba90] | committer: Paul B Mahol
avfilter/vf_ocr: also export confidence of result
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=96c79d4e1fd87dbedfd70ed876ee257ddda2ba90
---
doc/filters.texi | 1 +
libavfilter/vf_ocr.c | 10 ++++++++++
2 files changed, 11 insertions(+)
diff --git a/doc/filters.texi b/doc/filters.texi
index 0d06278665..163ffef13f 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -12910,6 +12910,7 @@ Set character blacklist.
@end table
The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
+The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
@section ocv
diff --git a/libavfilter/vf_ocr.c b/libavfilter/vf_ocr.c
index abfff49438..d5f76059b7 100644
--- a/libavfilter/vf_ocr.c
+++ b/libavfilter/vf_ocr.c
@@ -100,11 +100,21 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
AVFilterLink *outlink = ctx->outputs[0];
OCRContext *s = ctx->priv;
char *result;
+ int *confs;
result = TessBaseAPIRect(s->tess, in->data[0], 1,
in->linesize[0], 0, 0, in->width, in->height);
+ confs = TessBaseAPIAllWordConfidences(s->tess);
av_dict_set(metadata, "lavfi.ocr.text", result, 0);
+ for (int i = 0; confs[i] != -1; i++) {
+ char number[256];
+
+ snprintf(number, sizeof(number), "%d ", confs[i]);
+ av_dict_set(metadata, "lavfi.ocr.confidence", number, AV_DICT_APPEND);
+ }
+
TessDeleteText(result);
+ TessDeleteIntArray(confs);
return ff_filter_frame(outlink, in);
}
More information about the ffmpeg-cvslog
mailing list