Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider c74f4c94 rédigé par Richard Zanibbi's avatar Richard Zanibbi
Parcourir les fichiers

Initial commit.

parent
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 1227 ajouts et 0 suppression
Fichier ajouté
License and Copyright
The LgEval evaluation toolkit is Copyright (c) 01/06/2013, Richard Zanibbi
and Harold Mouchère. LgEval is free software; you may redistribute it and/or
modify it under the terms of the Creative Commons CC BY-NC-SA 3.0
(Attribution-NonCommercial-ShareAlike 3.0 Unported)
These programs are distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the Creative Commons License CC BY-NC-SA 3.0 for
more details. You should have received a copy of the Creative Commons License
along with this program; if not, you can also find the Creative Commons licence
on the Creative Commons web site.
In addition, we ask that you acknowlege LgEval and its authors in any
program or publications in which LgEval is used. (You are not required to do
so; it is your choice to decide whether you wish to comply with this request
or not.) For general publications, we ask that you reference:
Zanibbi, R., Mouchère, H., and Viard-Gaudin, C. "Evaluating structural pattern
recognition for handwritten math via primitive label graphs," Proc. Document
Recognition and Retrieval XX, San Francisco, CA, Feb. 2012.
--------------------------------------------------------------------------
Label Graph Tools v.0.2.1
Copyright (c) 2012-2013, R. Zanibbi, H. Mouchere
*Contact information is provided at the bottom of the file.
--------------------------------------------------------------------------
:: License ::
These tools are provided in the framework of the ICDAR 2013 CROHME
competition 'as is' without any guarantee of suitability for non-research
use. No commercial use is permitted. The tools are being distributed under
a Creative Commons license (please see the LICENSE file, and the directory
cc_license contains a file detailing the specifics of the license).
:: Requirements ::
Perl (with LibXML), python 2.6/2.7 and TXL (www.txl.ca) are required to run
the tools included. LgEval (distributed separately) is also required for
some of the converter programs. Scripts are written in perl and
bash. GraphViz (in particular, 'dot') is needed for graph visualization.
----------------------------------
INSTALLATION
----------------------------------
Make sure that CROHMELibDir and LgEvalDir are defined in
your shell enviroment, e.g. by including:
export LgEvalDir=<path_to_LgEval>
export CROHMELibDir=<path_to_CROHMELib>
export PATH=$PATH:$CROHMELibDir/bin:$LgEvalDir/bin
in your .bashrc file (the initialization file for bash shell). The PATH
alteration will add the tools to your search path.
To avoid warnings about stack sizes from TXL, use the following (using sudo/
as super or root user) from the bash command line:
ulimit -s 16384
this increases the maximum call stack size for the shell.
----------------------------
Graph Files (CSV files)
----------------------------
Graphs are represented by lists of node ids, and edge pairs over node ids, with
which one or more labels may be associated. Examples may be found in the tests/
subdirectory.
----------------------------
Scripts
----------------------------
Scripts in bin/ are used to call the applications listed below
more conveniently. Call a script without arguments to obtain a description
and instructions on how to use the program.
evaluate
Main evaluation script for label graphs. For CROHME 2013 this is set
up to automatically produce metric files, differences, result summaries,
and visualizations of recognition errors (requires GraphViz). Program
produces evaluation results given a directory of output files and
a corresponding directory of ground truth files.
lg2dot
Create .dot and .pdf output for a label graph, or visualize the
difference between two label graphs. Different graph types may be
produced (requires GraphViz).
lg2mml
Create MathML output from a label graph (requires CROHMELib)
----------------------------
Applications
----------------------------
All programs are written in Python (2.x compatible), aside
from inkML2lg.pl (which is written in Perl). The following
files are located in the src/ directory.
python src/evallg.py
Used to compute metrics for label graph files. Can
be run over a pair of files, or in batch mode.
Metrics are written to <infile>.m, and differences between
pairs of graphs are written to <infile>.diff.
NOTE: If a node is absent in one of the graphs, it will
be inserted as 'ABSENT' in the other graph, with an edge
labeled ('ABSENT',1.0) between the ABSENT node and every
other node in the graph. See Lg.matchAbsent() in the file
lg.py.
python src/metricDist.py
Used to select a metric from a CSV file (.m) produced by the
'evallg' program. Useful for producing histograms.
python src/sumMetric.py
Takes a metric (.m) file produced by evallg, and presents
some summary statistics for collected metrics.
python src/sumDiff.py
Takes a difference (.diff) file produced by evallg, and presents
confusion matrices for node labels and edge labels.
Output is in CSV or HTML.
python src/lg2dot.py
Convert a graph to .dot format (which can then be rendered
using the 'dot' program from GraphViz). Differences between
a pair of graphs may also be visualized for:
- Bipartite label graph(s)
- Segmentation graph(s)
- DAG(s) represention of label graph
- Tree-based representation of label graph (e.g. a
symbol layout tree/SRT for a mathematical expression)
python src/lg2txt.py [also see translate directory]
Convert a graph to a string encoding, e.g. LaTeX. A symbol and structure
mapping may be defined in an accompanying .csv file, such
as translate/symbolMap.csv. A MathML conversion (for CROHME 2013)
is provided, in translate/mathMLMap.csv.
----------------------------
Supporting Source Files
----------------------------
src/lg.py
defines the label graph class, along with key
transformations and functions to collect comparison/evaluation
metrics. Also defines methods to print graphs and
write graphs to file.
src/lgio.py
operations to output evaluation metrics.
--------------------------------
Contact
--------------------------------
Harold Mouchère
harold.mouchere@univ-nantes.fr
University of Nantes, France
Richard Zanibbi
rlaz@cs.rit.edu
Rochester Institute of Technology, USA
#!/bin/bash
# Make sure that CROHMELibDir and LgEvalDir are defined in
# your shell enviroment, e.g. by including:
#
# export LgEvalDir=<path_to_LgEval>
# export CROHMELibDir=<path_to_CROHMELib>
# export PATH=$PATH:$CROHMELibDir/bin:$LgEvalDir/bin
#
# in your .bashrc file (the initialization file for bash shell). The PATH
# alteration will add the tools to your search path.
if [ $# -lt 2 ]
then
echo "LgEval Label graph evaluation tool"
echo "Copyright (c) R. Zanibbi, H. Mouchere, 2012-2013"
echo ""
echo "Usage: evaluate outputDir groundTruthDir [d/s/b/t(default)]"
echo ""
echo "WARNING: this script will remove Results<outputDir> from the"
echo "current directory to avoid confusion. Make sure to save previous"
echo "evaluation results for a given directory if you wish to keep them."
echo ""
echo "Evaluates all label graph (.lg) files in outputDir against"
echo "corresponding files in groundTruthDir. groundTruthDir is used"
echo "to generate the list of files to be compared (i.e. if a file is"
echo "not in the ground truth directory, it will not be considered)."
echo ""
echo "Outputs"
echo "-----------------------------"
echo " Results<outputDir>/"
echo " Summary : summary of performance metrics"
echo " Correct : list outputDir files matching ground truth"
echo " Metrics.m : metrics for all .lg files compared"
echo " Diffs.diff : all differences between files"
echo " ConfusionMatrix.html : node and edge label confusion matrix"
echo " (errors only)"
echo ""
echo " Metrics/ : directory with .m (metric) and .diff (difference) file for"
echo " each comparison, along with .dot (GraphViz) and .pdf files for"
echo " viewing differences between files."
echo ""
echo "NOTE: By default differences are visualized in .pdf files located in Metrics/"
echo " using symbol layout trees; a third argument may be provided to"
echo " produce other visualizations of structural differences"
echo " (see lg2dot for details)."
exit 0
fi
dir=$1
BNAME=`basename $1`
truthDir=$2
ResultsDir=Results_$BNAME
# Remove existing evaluation directory, and create a new one.
rm -fr $ResultsDir
mkdir $ResultsDir
mkdir $ResultsDir/Metrics
echo "Output Files: $1"
echo "Ground Truth: $2"
echo ""
# Compute all .m metrics outputs (per-file), and .diff results (per-file).
echo "Evaluating files..."
PREFIX=res_
for file in $truthDir/*.lg
do
FNAME=`basename $file .lg`
nextFile=$dir/$FNAME.lg
echo " >> Comparing $FNAME.lg"
python $LgEvalDir/src/evallg.py $nextFile $file m > $ResultsDir/Metrics/$FNAME.m
DIFF=`python $LgEvalDir/src/evallg.py $nextFile $file diff`
if [ -n "$DIFF" ]
then
echo "$DIFF" > $ResultsDir/Metrics/$FNAME.diff
# If a third argument is provided, generate a .pdf file to visualize
# differences between graphs.
if [ $# -gt 2 ]
then
lg2dot $nextFile $file $3
mv $FNAME.dot $FNAME.pdf $ResultsDir/Metrics/
else
lg2dot $nextFile $file t
mv $FNAME.dot $FNAME.pdf $ResultsDir/Metrics/
fi
else
echo "$nextFile" >> $ResultsDir/Correct
fi
done
# Compile all metrics/diffs,
# and then compute metric summaries and confusion matrices.
cat $ResultsDir/Metrics/*.m > $ResultsDir/Metrics.m
ALLDIFFS=`ls $ResultsDir/Metrics | grep .diff`
if [ -n "$ALLDIFFS" ]
then
cat $ResultsDir/Metrics/*.diff > $ResultsDir/Diffs.diff
else
touch $ResultsDir/__NoErrors
touch $ResultsDir/Diffs.diff # empty - no errors.
fi
python $LgEvalDir/src/sumMetric.py $ResultsDir/Metrics.m > $ResultsDir/__Summary
python $LgEvalDir/src/sumDiff.py $ResultsDir/Diffs.diff html > $ResultsDir/ConfusionMatrix.html
echo "done."
#!/bin/bash
# Make sure that CROHMELibDir and LgEvalDir are defined in
# your shell enviroment, e.g. by including:
#
# export LgEvalDir=<path_to_LgEval>
# export CROHMELibDir=<path_to_CROHMELib>
# export PATH=$PATH:$CROHMELibDir/bin:$LgEvalDir/bin
#
# in your .bashrc file (the initialization file for bash shell). The PATH
# alteration will add the tools to your search path.
if [ $# -lt 1 ]
then
echo "LgEval Label graph to dot (GraphViz) converter"
echo "Copyright (c) R. Zanibbi, H. Mouchere, 2012-2013"
echo ""
echo "Usage: lg2mml file1.lg [file2.lg] [graph_type]"
echo ""
echo "Converts a label graph file files to a .dot file,"
echo "which can then be converted to a .pdf, .png or other"
echo "image format using the GraphViz 'dot' program."
echo ""
echo "If a second .lg file is provided, then the difference"
echo "between the first graph and ground truth (the second"
echo "file) is visualized."
echo ""
echo "The graph_type argument may be one of the following:"
echo " - [default; no argument] a bipartite graph over strokes."
echo " - s : a bipartite segmentation graph (shows strokes in symbols)"
echo " - d : a directed acyclic graph over strokes"
echo " - t : a tree (NOTE: requires a valid hierachical structure)"
exit 0
fi
BNAME=`basename $1 .lg`
if [ $# -eq 1 ]
then
python $LgEvalDir/src/lg2dot.py $1 > $BNAME.dot
elif [ $# -eq 2 ]
then
# Use tree output by default.
python $LgEvalDir/src/lg2dot.py $1 $2 > $BNAME.dot
else
python $LgEvalDir/src/lg2dot.py $1 $2 $3 > $BNAME.dot
fi
# Call dot and generate a .pdf file.
dot -Tpdf $BNAME.dot -o $BNAME.pdf
#!/bin/bash
# Make sure that CROHMELibDir and LgEvalDir are defined in
# your shell enviroment, e.g. by including:
#
# export LgEvalDir=<path_to_LgEval>
# export CROHMELibDir=<path_to_CROHMELib>
# export PATH=$PATH:$CROHMELibDir/bin:$LgEvalDir/bin
#
# in your .bashrc file (the initialization file for bash shell). The PATH
# alteration will add the tools to your search path.
if [ $# -lt 1 ]
then
echo "LgEval Label graph to text converter"
echo "Copyright (c) R. Zanibbi, H. Mouchere, 2012-2013"
echo ""
echo "Usage: lg2mml file.lg"
echo ""
echo "Converts a label graph file files to a MathML file,"
echo "written as file.mml to the current directory."
exit 0
fi
BNAME=`basename $1 .lg`
python $LgEvalDir/src/lg2txt.py $1 $LgEvalDir/translate/mathMLMap.csv > temp.mml
txl -I $CROHMELibDir/src -I $CROHMELibDir/src/Grammars temp.mml $CROHMELibDir/src/pprintMathML.Txl > $BNAME.mml
rm temp.mml
#!/bin/bash
# Make sure that CROHMELibDir and LgEvalDir are defined in
# your shell enviroment, e.g. by including:
#
# export LgEvalDir=<path_to_LgEval>
# export CROHMELibDir=<path_to_CROHMELib>
# export PATH=$PATH:$CROHMELibDir/bin:$LgEvalDir/bin
#
# in your .bashrc file (the initialization file for bash shell). The PATH
# alteration will add the tools to your search path.
if [ $# -lt 1 ]
then
echo "Usage: eval <outputDir> [groundTruthDir]"
echo ""
echo "Compares all .lg files in groundTruthDir to to matching"
echo "files (currently, with res_ prefix, and .inkml.lg sufix)."
echo ""
echo "Note: this script compares label graphs (.lg files)."
echo ""
echo "Output files:"
echo " - .m (metric) and .diff (difference) files for"
echo " each test file in outputDir"
echo " - ./Correct[outputDir] containing the list of correct"
echo " files from outputDir (i.e. matching groundTruth)"
echo " - ./Metrics[outputDir] compiling all metric values"
echo " - ./Diffs[outputDir] compiling all differences"
echo ""
echo " - ./Results[outputDir] summarizing performance metrics"
echo " - ./Diffs[outputDir].csv, providing node and edge label"
echo " confusion matrices (NOTE: currently errors only - no correct counts)"
exit 0
fi
dir=$1
echo "Evaluating recognizer output files in $dir..."
# Remove summary files.
rm -f Correct$dir Results$dir Diffs$dir Metrics$dir
# Compute all .m metrics outputs (per-file), and .diff results (per-file).
cd $dir
# Clean up old evaluation files
rm -f *.m *.diff
truthDir=testDataGT
if [ $# -gt 1 ]
then
truthDir=$2
fi
PREFIX=res_
#PREFIX="" # For use with ground truth data on itself.
for file in ../$truthDir/*.lg
do
nextFile=`basename $file`
python evallg.py $PREFIX$nextFile $file m > $nextFile.m
DIFF=`python evallg.py $PREFIX$nextFile $file diff`
if [ -n "$DIFF" ]
then
echo "$DIFF" > $nextFile.diff
else
echo "$PREFIX$nextFile" >> ../Correct$dir
fi
done
# Back to main directory - compile all metrics/diffs,
# and then compute metric summaries and confusion matrices.
cd ..
cat $dir/*.m > ./Metrics$dir
cat $dir/*.diff > ./Diffs$dir
python sumMetric.py Metrics$dir > Results$dir
python sumDiff.py Diffs$dir > Diffs$dir.csv
echo "finished."
Fichier ajouté
clean:
rm -f *.pyc
Fichier ajouté
# 2 + 2
N, s1, 2, 1.0
N, s2, +, 1.0
N, s3, +, 1.0
N, s4, 2, 1.0
E, s1, s2, R, 1.0
E, s1, s3, R, 1.0
E, s1, s4, R, 1.0
E, s2, s3, *, 1.0
E, s2, s4, R, 1.0
E, s3, s2, *, 1.0
E, s3, s4, R, 1.0
# 2 - 1^2
N, s1, 2, 1.0
N, s2, 1, 1.0
N, s3, -, 1.0
N, s4, 2, 1.0
E, s1, s2, R, 1.0
E, s1, s3, R, 1.0
E, s1, s4, R, 1.0
E, s2, s4, Sup, 1.0
E, s3, s2, R, 1.0
E, s3, s4, R, 1.0
# 2 + 2 (over-segmented)
N, s1, 2, 1.0
N, s2, +, 1.0
N, s3, +, 1.0
N, s4, 2, 1.0
E, s1, s2, R, 1.0
E, s1, s3, R, 1.0
E, s1, s4, R, 1.0
E, s2, s4, R, 1.0
E, s3, s4, R, 1.0
# IUD, 2011_ISI_algb06
# Nodes:
N, 0, z, 1.0
N, 1, z, 1.0
N, 2, 1, 1.0
N, 3, =, 1.0
N, 4, =, 1.0
N, 5, r, 1.0
N, 6, 1, 1.0
N, 7, (, 1.0
N, 8, \cos, 1.0
N, 9, \theta, 1.0
N, 10, 1, 1.0
N, 11, +, 1.0
N, 12, +, 1.0
N, 13, i, 1.0
N, 14, i, 1.0
N, 15, \sin, 1.0
N, 16, \sin, 1.0
N, 17, \theta, 1.0
N, 18, 1, 1.0
N, 19, ), 1.0
# Edges:
E, 0, 1, *, 1.0
E, 0, 2, Sub, 1.0
E, 0, 3, R, 1.0
E, 0, 4, R, 1.0
E, 0, 5, R, 1.0
E, 0, 6, R, 1.0
E, 0, 7, R, 1.0
E, 0, 8, R, 1.0
E, 0, 9, R, 1.0
E, 0, 10, R, 1.0
E, 0, 11, R, 1.0
E, 0, 12, R, 1.0
E, 0, 13, R, 1.0
E, 0, 14, R, 1.0
E, 0, 15, R, 1.0
E, 0, 16, R, 1.0
E, 0, 17, R, 1.0
E, 0, 18, R, 1.0
E, 0, 19, R, 1.0
E, 1, 0, *, 1.0
E, 1, 2, Sub, 1.0
E, 1, 3, R, 1.0
E, 1, 4, R, 1.0
E, 1, 5, R, 1.0
E, 1, 6, R, 1.0
E, 1, 7, R, 1.0
E, 1, 8, R, 1.0
E, 1, 9, R, 1.0
E, 1, 10, R, 1.0
E, 1, 11, R, 1.0
E, 1, 12, R, 1.0
E, 1, 13, R, 1.0
E, 1, 14, R, 1.0
E, 1, 15, R, 1.0
E, 1, 16, R, 1.0
E, 1, 17, R, 1.0
E, 1, 18, R, 1.0
E, 1, 19, R, 1.0
E, 3, 4, *, 1.0
E, 3, 5, R, 1.0
E, 3, 6, R, 1.0
E, 3, 7, R, 1.0
E, 3, 8, R, 1.0
E, 3, 9, R, 1.0
E, 3, 10, R, 1.0
E, 3, 11, R, 1.0
E, 3, 12, R, 1.0
E, 3, 13, R, 1.0
E, 3, 14, R, 1.0
E, 3, 15, R, 1.0
E, 3, 16, R, 1.0
E, 3, 17, R, 1.0
E, 3, 18, R, 1.0
E, 3, 19, R, 1.0
E, 4, 3, *, 1.0
E, 4, 5, R, 1.0
E, 4, 6, R, 1.0
E, 4, 7, R, 1.0
E, 4, 8, R, 1.0
E, 4, 9, R, 1.0
E, 4, 10, R, 1.0
E, 4, 11, R, 1.0
E, 4, 12, R, 1.0
E, 4, 13, R, 1.0
E, 4, 14, R, 1.0
E, 4, 15, R, 1.0
E, 4, 16, R, 1.0
E, 4, 17, R, 1.0
E, 4, 18, R, 1.0
E, 4, 19, R, 1.0
E, 5, 6, Sub, 1.0
E, 5, 7, R, 1.0
E, 5, 8, R, 1.0
E, 5, 9, R, 1.0
E, 5, 10, R, 1.0
E, 5, 11, R, 1.0
E, 5, 12, R, 1.0
E, 5, 13, R, 1.0
E, 5, 14, R, 1.0
E, 5, 15, R, 1.0
E, 5, 16, R, 1.0
E, 5, 17, R, 1.0
E, 5, 18, R, 1.0
E, 5, 19, R, 1.0
E, 7, 8, R, 1.0
E, 7, 9, R, 1.0
E, 7, 10, R, 1.0
E, 7, 11, R, 1.0
E, 7, 12, R, 1.0
E, 7, 13, R, 1.0
E, 7, 14, R, 1.0
E, 7, 15, R, 1.0
E, 7, 16, R, 1.0
E, 7, 17, R, 1.0
E, 7, 18, R, 1.0
E, 7, 19, R, 1.0
E, 8, 9, R, 1.0
E, 8, 10, R, 1.0
E, 8, 11, R, 1.0
E, 8, 12, R, 1.0
E, 8, 13, R, 1.0
E, 8, 14, R, 1.0
E, 8, 15, R, 1.0
E, 8, 16, R, 1.0
E, 8, 17, R, 1.0
E, 8, 18, R, 1.0
E, 8, 19, R, 1.0
E, 9, 10, Sub, 1.0
E, 9, 11, R, 1.0
E, 9, 12, R, 1.0
E, 9, 13, R, 1.0
E, 9, 14, R, 1.0
E, 9, 15, R, 1.0
E, 9, 16, R, 1.0
E, 9, 17, R, 1.0
E, 9, 18, R, 1.0
E, 9, 19, R, 1.0
E, 11, 12, *, 1.0
E, 11, 13, R, 1.0
E, 11, 14, R, 1.0
E, 11, 15, R, 1.0
E, 11, 16, R, 1.0
E, 11, 17, R, 1.0
E, 11, 18, R, 1.0
E, 11, 19, R, 1.0
E, 12, 11, *, 1.0
E, 12, 13, R, 1.0
E, 12, 14, R, 1.0
E, 12, 15, R, 1.0
E, 12, 16, R, 1.0
E, 12, 17, R, 1.0
E, 12, 18, R, 1.0
E, 12, 19, R, 1.0
E, 13, 14, *, 1.0
E, 13, 15, R, 1.0
E, 13, 16, R, 1.0
E, 13, 17, R, 1.0
E, 13, 18, R, 1.0
E, 13, 19, R, 1.0
E, 14, 13, *, 1.0
E, 14, 15, R, 1.0
E, 14, 16, R, 1.0
E, 14, 17, R, 1.0
E, 14, 18, R, 1.0
E, 14, 19, R, 1.0
E, 15, 16, *, 1.0
E, 15, 17, R, 1.0
E, 15, 18, R, 1.0
E, 15, 19, R, 1.0
E, 16, 15, *, 1.0
E, 16, 17, R, 1.0
E, 16, 18, R, 1.0
E, 16, 19, R, 1.0
E, 17, 18, Sub, 1.0
E, 17, 19, R, 1.0
SYMBOLS
cos,->,\cos
sqrt,->,\sqrt
STRUCTURE
sqrt,CONTAINS,->,\sqrt,CONTAINS
-,A,B,->,\frac,A,B
SUP,->, ^, { , }
SUB,->, _, { , }
R,->, ,,
HOR,->, ,,
# All ICDAR 2011 examples, plus empty files.
tests/paperExampleGT,tests/paperExampleGT
tests/paperExampleGT,tests/paperExampleErrA
tests/paperExampleGT,tests/paperExampleErrB
tests/paperExampleGT,tests/paperExampleErrC
tests/paperExampleGT,tests/paperExampleErrD
tests/paperExampleGT,tests/emptyfile
tests/paperExampleGT,tests/emptyfile
tests/paperExampleGT,tests/emptyfile
tests/paperExampleGT,tests/emptyfile
tests/paperExampleGT,tests/emptyfile
DIFF,tests/paperExampleGT,tests/paperExampleGT
DIFF,tests/paperExampleErrA,tests/paperExampleGT
*N,s3,6,1.0,:vs:,b,1.0,
DIFF,tests/paperExampleErrB,tests/paperExampleGT
*E,s3,s5,R,1.0,:vs:,Sup,1.0
*E,s3,s4,R,1.0,:vs:,Sup,1.0
DIFF,tests/paperExampleErrC,tests/paperExampleGT
*N,s5,1,1.0,:vs:,d,1.0,
*N,s4,0,1.0,:vs:,d,1.0,
*E,s4,s5,R,1.0,:vs:,_,1.0
*S,s5,s4
*S,s4,s5
DIFF,tests/paperExampleErrD,tests/paperExampleGT
*N,s5,1,1.0,:vs:,d,1.0,
*N,s4,0,1.0,:vs:,d,1.0,
*E,s1,s5,Sub,1.0,:vs:,_,1.0
*E,s3,s5,_,1.0,:vs:,Sup,1.0
*E,s2,s5,U,1.0,:vs:,D,1.0
*S,s5,s4
*S,s4,s5
DIFF,tests/emptyfile,tests/paperExampleGT
*N,s3,ABSENT,1.0,:vs:,b,1.0,
*N,s2,ABSENT,1.0,:vs:,hline,1.0,
*N,s1,ABSENT,1.0,:vs:,a,1.0,
*N,s5,ABSENT,1.0,:vs:,d,1.0,
*N,s4,ABSENT,1.0,:vs:,d,1.0,
*E,s4,s5,ABSENT,1.0,:vs:,_,1.0
*E,s5,s1,ABSENT,1.0,:vs:,_,1.0
*E,s1,s3,ABSENT,1.0,:vs:,_,1.0
*E,s3,s1,ABSENT,1.0,:vs:,_,1.0
*E,s4,s1,ABSENT,1.0,:vs:,_,1.0
*E,s3,s2,ABSENT,1.0,:vs:,_,1.0
*E,s1,s4,ABSENT,1.0,:vs:,_,1.0
*E,s1,s5,ABSENT,1.0,:vs:,_,1.0
*E,s5,s4,ABSENT,1.0,:vs:,_,1.0
*E,s1,s2,ABSENT,1.0,:vs:,_,1.0
*E,s4,s2,ABSENT,1.0,:vs:,_,1.0
*E,s4,s3,ABSENT,1.0,:vs:,_,1.0
*E,s5,s2,ABSENT,1.0,:vs:,_,1.0
*E,s5,s3,ABSENT,1.0,:vs:,_,1.0
*E,s3,s5,ABSENT,1.0,:vs:,Sup,1.0
*E,s2,s5,ABSENT,1.0,:vs:,D,1.0
*E,s2,s4,ABSENT,1.0,:vs:,D,1.0
*E,s2,s1,ABSENT,1.0,:vs:,U,1.0
*E,s2,s3,ABSENT,1.0,:vs:,D,1.0
*E,s3,s4,ABSENT,1.0,:vs:,Sup,1.0
*S,s5,s4
*S,s4,s5
DIFF,tests/emptyfile,tests/paperExampleGT
*N,s3,ABSENT,1.0,:vs:,b,1.0,
*N,s2,ABSENT,1.0,:vs:,hline,1.0,
*N,s1,ABSENT,1.0,:vs:,a,1.0,
*N,s5,ABSENT,1.0,:vs:,d,1.0,
*N,s4,ABSENT,1.0,:vs:,d,1.0,
*E,s4,s5,ABSENT,1.0,:vs:,_,1.0
*E,s5,s1,ABSENT,1.0,:vs:,_,1.0
*E,s1,s3,ABSENT,1.0,:vs:,_,1.0
*E,s3,s1,ABSENT,1.0,:vs:,_,1.0
*E,s4,s1,ABSENT,1.0,:vs:,_,1.0
*E,s3,s2,ABSENT,1.0,:vs:,_,1.0
*E,s1,s4,ABSENT,1.0,:vs:,_,1.0
*E,s1,s5,ABSENT,1.0,:vs:,_,1.0
*E,s5,s4,ABSENT,1.0,:vs:,_,1.0
*E,s1,s2,ABSENT,1.0,:vs:,_,1.0
*E,s4,s2,ABSENT,1.0,:vs:,_,1.0
*E,s4,s3,ABSENT,1.0,:vs:,_,1.0
*E,s5,s2,ABSENT,1.0,:vs:,_,1.0
*E,s5,s3,ABSENT,1.0,:vs:,_,1.0
*E,s3,s5,ABSENT,1.0,:vs:,Sup,1.0
*E,s2,s5,ABSENT,1.0,:vs:,D,1.0
*E,s2,s4,ABSENT,1.0,:vs:,D,1.0
*E,s2,s1,ABSENT,1.0,:vs:,U,1.0
*E,s2,s3,ABSENT,1.0,:vs:,D,1.0
*E,s3,s4,ABSENT,1.0,:vs:,Sup,1.0
*S,s5,s4
*S,s4,s5
DIFF,tests/emptyfile,tests/paperExampleGT
*N,s3,ABSENT,1.0,:vs:,b,1.0,
*N,s2,ABSENT,1.0,:vs:,hline,1.0,
*N,s1,ABSENT,1.0,:vs:,a,1.0,
*N,s5,ABSENT,1.0,:vs:,d,1.0,
*N,s4,ABSENT,1.0,:vs:,d,1.0,
*E,s4,s5,ABSENT,1.0,:vs:,_,1.0
*E,s5,s1,ABSENT,1.0,:vs:,_,1.0
*E,s1,s3,ABSENT,1.0,:vs:,_,1.0
*E,s3,s1,ABSENT,1.0,:vs:,_,1.0
*E,s4,s1,ABSENT,1.0,:vs:,_,1.0
*E,s3,s2,ABSENT,1.0,:vs:,_,1.0
*E,s1,s4,ABSENT,1.0,:vs:,_,1.0
*E,s1,s5,ABSENT,1.0,:vs:,_,1.0
*E,s5,s4,ABSENT,1.0,:vs:,_,1.0
*E,s1,s2,ABSENT,1.0,:vs:,_,1.0
*E,s4,s2,ABSENT,1.0,:vs:,_,1.0
*E,s4,s3,ABSENT,1.0,:vs:,_,1.0
*E,s5,s2,ABSENT,1.0,:vs:,_,1.0
*E,s5,s3,ABSENT,1.0,:vs:,_,1.0
*E,s3,s5,ABSENT,1.0,:vs:,Sup,1.0
*E,s2,s5,ABSENT,1.0,:vs:,D,1.0
*E,s2,s4,ABSENT,1.0,:vs:,D,1.0
*E,s2,s1,ABSENT,1.0,:vs:,U,1.0
*E,s2,s3,ABSENT,1.0,:vs:,D,1.0
*E,s3,s4,ABSENT,1.0,:vs:,Sup,1.0
*S,s5,s4
*S,s4,s5
DIFF,tests/emptyfile,tests/paperExampleGT
*N,s3,ABSENT,1.0,:vs:,b,1.0,
*N,s2,ABSENT,1.0,:vs:,hline,1.0,
*N,s1,ABSENT,1.0,:vs:,a,1.0,
*N,s5,ABSENT,1.0,:vs:,d,1.0,
*N,s4,ABSENT,1.0,:vs:,d,1.0,
*E,s4,s5,ABSENT,1.0,:vs:,_,1.0
*E,s5,s1,ABSENT,1.0,:vs:,_,1.0
*E,s1,s3,ABSENT,1.0,:vs:,_,1.0
*E,s3,s1,ABSENT,1.0,:vs:,_,1.0
*E,s4,s1,ABSENT,1.0,:vs:,_,1.0
*E,s3,s2,ABSENT,1.0,:vs:,_,1.0
*E,s1,s4,ABSENT,1.0,:vs:,_,1.0
*E,s1,s5,ABSENT,1.0,:vs:,_,1.0
*E,s5,s4,ABSENT,1.0,:vs:,_,1.0
*E,s1,s2,ABSENT,1.0,:vs:,_,1.0
*E,s4,s2,ABSENT,1.0,:vs:,_,1.0
*E,s4,s3,ABSENT,1.0,:vs:,_,1.0
*E,s5,s2,ABSENT,1.0,:vs:,_,1.0
*E,s5,s3,ABSENT,1.0,:vs:,_,1.0
*E,s3,s5,ABSENT,1.0,:vs:,Sup,1.0
*E,s2,s5,ABSENT,1.0,:vs:,D,1.0
*E,s2,s4,ABSENT,1.0,:vs:,D,1.0
*E,s2,s1,ABSENT,1.0,:vs:,U,1.0
*E,s2,s3,ABSENT,1.0,:vs:,D,1.0
*E,s3,s4,ABSENT,1.0,:vs:,Sup,1.0
*S,s5,s4
*S,s4,s5
DIFF,tests/emptyfile,tests/paperExampleGT
*N,s3,ABSENT,1.0,:vs:,b,1.0,
*N,s2,ABSENT,1.0,:vs:,hline,1.0,
*N,s1,ABSENT,1.0,:vs:,a,1.0,
*N,s5,ABSENT,1.0,:vs:,d,1.0,
*N,s4,ABSENT,1.0,:vs:,d,1.0,
*E,s4,s5,ABSENT,1.0,:vs:,_,1.0
*E,s5,s1,ABSENT,1.0,:vs:,_,1.0
*E,s1,s3,ABSENT,1.0,:vs:,_,1.0
*E,s3,s1,ABSENT,1.0,:vs:,_,1.0
*E,s4,s1,ABSENT,1.0,:vs:,_,1.0
*E,s3,s2,ABSENT,1.0,:vs:,_,1.0
*E,s1,s4,ABSENT,1.0,:vs:,_,1.0
*E,s1,s5,ABSENT,1.0,:vs:,_,1.0
*E,s5,s4,ABSENT,1.0,:vs:,_,1.0
*E,s1,s2,ABSENT,1.0,:vs:,_,1.0
*E,s4,s2,ABSENT,1.0,:vs:,_,1.0
*E,s4,s3,ABSENT,1.0,:vs:,_,1.0
*E,s5,s2,ABSENT,1.0,:vs:,_,1.0
*E,s5,s3,ABSENT,1.0,:vs:,_,1.0
*E,s3,s5,ABSENT,1.0,:vs:,Sup,1.0
*E,s2,s5,ABSENT,1.0,:vs:,D,1.0
*E,s2,s4,ABSENT,1.0,:vs:,D,1.0
*E,s2,s1,ABSENT,1.0,:vs:,U,1.0
*E,s2,s3,ABSENT,1.0,:vs:,D,1.0
*E,s3,s4,ABSENT,1.0,:vs:,Sup,1.0
*S,s5,s4
*S,s4,s5
*M,tests/paperExampleGT,tests/paperExampleGT
D_C,0,D_S,0,D_L,0,D_B(%),0.0,D_E(sqrt),0.0,D_E(S-1),0.0,D_C(%),0.0,D_S(%),0.0,D_L(%),0.0,D_B,0
*M,tests/paperExampleErrA,tests/paperExampleGT
D_C,1,D_S,0,D_L,0,D_B(%),0.04,D_E(sqrt),0.0666666666667,D_E(S-1),0.0666666666667,D_C(%),0.2,D_S(%),0.0,D_L(%),0.0,D_B,1
*M,tests/paperExampleErrB,tests/paperExampleGT
D_C,0,D_S,0,D_L,2,D_B(%),0.08,D_E(sqrt),0.105409255339,D_E(S-1),0.00833333333333,D_C(%),0.0,D_S(%),0.0,D_L(%),0.1,D_B,2
*M,tests/paperExampleErrC,tests/paperExampleGT
D_C,2,D_S,2,D_L,1,D_B(%),0.12,D_E(sqrt),0.313278187922,D_E(S-1),0.145833333333,D_C(%),0.4,D_S(%),0.1,D_L(%),0.05,D_B,3
*M,tests/paperExampleErrD,tests/paperExampleGT
D_C,2,D_S,2,D_L,3,D_B(%),0.2,D_E(sqrt),0.367842033546,D_E(S-1),0.154166666667,D_C(%),0.4,D_S(%),0.1,D_L(%),0.15,D_B,5
*M,tests/emptyfile,tests/paperExampleGT
D_C,5,D_S,2,D_L,20,D_B(%),1.0,D_E(sqrt),0.772075922006,D_E(S-1),0.425,D_C(%),1.0,D_S(%),0.1,D_L(%),1.0,D_B,25
*M,tests/emptyfile,tests/paperExampleGT
D_C,5,D_S,2,D_L,20,D_B(%),1.0,D_E(sqrt),0.772075922006,D_E(S-1),0.425,D_C(%),1.0,D_S(%),0.1,D_L(%),1.0,D_B,25
*M,tests/emptyfile,tests/paperExampleGT
D_C,5,D_S,2,D_L,20,D_B(%),1.0,D_E(sqrt),0.772075922006,D_E(S-1),0.425,D_C(%),1.0,D_S(%),0.1,D_L(%),1.0,D_B,25
*M,tests/emptyfile,tests/paperExampleGT
D_C,5,D_S,2,D_L,20,D_B(%),1.0,D_E(sqrt),0.772075922006,D_E(S-1),0.425,D_C(%),1.0,D_S(%),0.1,D_L(%),1.0,D_B,25
*M,tests/emptyfile,tests/paperExampleGT
D_C,5,D_S,2,D_L,20,D_B(%),1.0,D_E(sqrt),0.772075922006,D_E(S-1),0.425,D_C(%),1.0,D_S(%),0.1,D_L(%),1.0,D_B,25
# Simple batch file; contains all examples from
# the ICDAR 2011 paper.
tests/paperExampleGT,tests/paperExampleGT
tests/paperExampleGT,tests/paperExampleErrA
tests/paperExampleGT,tests/paperExampleErrB
tests/paperExampleGT,tests/paperExampleErrC
tests/paperExampleGT,tests/paperExampleErrD
<ink xmlns="http://www.w3.org/2003/InkML">
<traceFormat>
<channel name="X" type="decimal"/>
<channel name="Y" type="decimal"/>
</traceFormat>
<annotation type="UI">2012_IVC_CROHME_f004-eq035</annotation>
<annotation type="age">26</annotation>
<annotation type="copyright">LUNAM/IRCCyN</annotation>
<annotation type="gender">M</annotation>
<annotation type="hand">R</annotation>
<annotation type="writer">depart004</annotation>
<annotation type="truth">$(69 + 177 \times 136) + (117 \div 140) &gt; 5612$</annotation>
<annotationXML type="truth" encoding="Content-MathML">
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mrow>
<mo xml:id="(_1">(</mo>
<mrow>
<mn xml:id="6_1">6</mn>
<mrow>
<mn xml:id="9_1">9</mn>
<mrow>
<mo xml:id="+_1">+</mo>
<mrow>
<mn xml:id="1_1">1</mn>
<mrow>
<mn xml:id="7_1">7</mn>
<mrow>
<mn xml:id="7_2">7</mn>
<mrow>
<mo xml:id="\times_1">\times</mo>
<mrow>
<mn xml:id="1_2">1</mn>
<mrow>
<mn xml:id="3_1">3</mn>
<mrow>
<mn xml:id="6_2">6</mn>
<mrow>
<mo xml:id=")_1">)</mo>
<mrow>
<mo xml:id="+_2">+</mo>
<mrow>
<mo xml:id="(_2">(</mo>
<mrow>
<mn xml:id="1_3">1</mn>
<mrow>
<mn xml:id="1_4">1</mn>
<mrow>
<mn xml:id="7_3">7</mn>
<mrow>
<mo xml:id="\div_1">\div</mo>
<mrow>
<mn xml:id="1_5">1</mn>
<mrow>
<mn xml:id="4_1">4</mn>
<mrow>
<mn xml:id="0_1">0</mn>
<mrow>
<mo xml:id=")_2">)</mo>
<mrow>
<mo xml:id="\gt_1">\gt</mo>
<mrow>
<mn xml:id="5_1">5</mn>
<mrow>
<mn xml:id="6_3">6</mn>
<mrow>
<mn xml:id="1_6">1</mn>
<mn xml:id="2_1">2</mn>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</mrow>
</math>
</annotationXML>
<trace id="0">
6.33974 10.8382, 6.33573 10.8261, 6.31968 10.8422, 6.28758 10.9144, 6.20332 11.0629, 6.1351 11.2715, 6.11504 11.428, 6.13109 11.5203, 6.17924 11.5805, 6.24745 11.5965, 6.3598 11.5685
</trace>
<trace id="1">
7.066 10.9586, 7.07403 10.9104, 7.05397 10.9104, 6.97773 10.9425, 6.85735 11.0629, 6.74902 11.2274, 6.69284 11.3638, 6.7129 11.4481, 6.76507 11.5002, 6.84933 11.5043, 6.94162 11.4681, 6.99378 11.416, 6.99779 11.3558, 6.95365 11.3076, 6.89347 11.3036, 6.83729 11.3237, 6.76105 11.3638, 6.70087 11.432, 6.70488 11.4641, 6.745 11.4802, 6.83328 11.4561
</trace>
<trace id="2">
7.47528 10.9465, 7.43114 10.9465, 7.36694 10.9666, 7.31478 11.0147, 7.24255 11.091, 7.20644 11.1792, 7.23453 11.2354, 7.28268 11.2434, 7.35891 11.2073, 7.42311 11.1431, 7.45521 11.0789, 7.45923 11.0147, 7.45521 10.9866, 7.44719 10.9947, 7.43114 11.0228, 7.43114 11.099, 7.43916 11.1833, 7.47528 11.2996, 7.49534 11.3919, 7.49133 11.4401, 7.45521 11.4882, 7.37095 11.5444, 7.26663 11.5564, 7.18638 11.5323, 7.14625 11.4922, 7.17033 11.4722
</trace>
<trace id="3">
7.9648 11.1993, 7.96079 11.2073, 7.94073 11.2475, 7.9327 11.3197, 7.91665 11.4039, 7.91264 11.5002, 7.90863 11.5685
</trace>
<trace id="4">
7.83239 11.3919, 7.83239 11.3879, 7.8364 11.3919, 7.85245 11.3919, 7.88856 11.3879, 8.01295 11.3919, 8.16944 11.3759
</trace>
<trace id="5">
8.37809 11.5404, 8.35803 11.5444, 8.36204 11.5524, 8.37809 11.5604, 8.40216 11.5484, 8.45433 11.4962, 8.55063 11.3959, 8.66298 11.2796, 8.74323 11.1712, 8.75928 11.1512, 8.74724 11.1632, 8.72316 11.2194, 8.69508 11.3277, 8.66298 11.432, 8.65896 11.5123, 8.671 11.5404, 8.7031 11.5283
</trace>
<trace id="6">
8.8957 11.0508, 8.90373 11.0428, 8.91175 11.0348, 8.9278 11.0228, 8.95589 11.0228, 9.00805 11.0428, 9.06423 11.087, 9.09632 11.1471, 9.09231 11.2113, 9.07225 11.2996, 9.05219 11.3919, 9.04416 11.4441, 9.04817 11.4802, 9.0562 11.5002, 9.0562 11.4962, 9.0562 11.4882
</trace>
<trace id="7">
8.8957 11.2956, 8.90373 11.2996, 8.91175 11.3076, 8.93181 11.3197, 8.95589 11.3237, 9.00002 11.3277, 9.10836 11.3076, 9.18059 11.2354
</trace>
<trace id="8">
9.23676 11.0508, 9.2488 11.0508, 9.26084 11.0468, 9.29294 11.0428, 9.33707 11.0428, 9.39726 11.0549, 9.43739 11.0749, 9.44942 11.107, 9.4414 11.1792, 9.43337 11.2796, 9.43739 11.3799, 9.44942 11.4722, 9.46547 11.5323, 9.46949 11.5524, 9.46547 11.5484
</trace>
<trace id="9">
9.34109 11.3478, 9.34109 11.3438, 9.35312 11.3478, 9.37319 11.3558, 9.40127 11.3638, 9.49356 11.3879, 9.58184 11.3759
</trace>
<trace id="10">
10.3924 11.1632, 10.3803 11.1792, 10.3643 11.1953, 10.3562 11.2234, 10.3282 11.2675, 10.288 11.3277, 10.2278 11.3799, 10.1396 11.424, 10.0714 11.4762, 10.0232 11.5163, 9.97907 11.5364, 9.97105 11.5364, 9.96704 11.5163
</trace>
<trace id="11">
10.0272 11.2394, 10.0232 11.2434, 10.0272 11.2555, 10.0473 11.2996, 10.0914 11.3879, 10.1596 11.5002, 10.2118 11.5685, 10.276 11.6447, 10.3402 11.6888, 10.4004 11.7049
</trace>
<trace id="12">
10.7414 11.0829, 10.7414 11.0749, 10.7374 11.095, 10.7294 11.1672, 10.7214 11.2996, 10.7093 11.412, 10.7214 11.4962, 10.7414 11.5484
</trace>
<trace id="13">
10.9942 11.0388, 11.0103 11.0228, 11.0303 11.0027, 11.0584 11.0027, 11.1146 11.0388, 11.1467 11.099, 11.1467 11.1752, 11.1066 11.2394, 11.0303 11.2876, 10.9822 11.3076, 10.9982 11.3076, 11.0384 11.3076, 11.0945 11.3237, 11.1467 11.3478, 11.1908 11.3959, 11.1868 11.4802, 11.1547 11.5002, 11.1226 11.5243, 11.0785 11.5243, 11.0223 11.5123, 10.9581 11.4842, 10.9541 11.4641
</trace>
<trace id="14">
11.6723 10.9786, 11.6523 10.9626, 11.6081 10.9826, 11.5239 11.0508, 11.3915 11.1672, 11.2871 11.3076, 11.2591 11.42, 11.3072 11.4962, 11.3674 11.5203, 11.4236 11.5083, 11.4757 11.4722, 11.4878 11.424, 11.4557 11.3799, 11.4115 11.3678, 11.3393 11.3799, 11.231 11.4401, 11.1828 11.5043, 11.1908 11.5524
</trace>
<trace id="15">
11.7606 10.8703, 11.7727 10.8502, 11.7927 10.8542, 11.8288 10.8743, 11.897 10.9425, 11.9733 11.0669, 12.0174 11.2073, 12.0054 11.3076, 11.9612 11.4039, 11.897 11.5123, 11.8208 11.5644, 11.7887 11.5925, 11.7767 11.5925, 11.7807 11.5845, 11.7887 11.5564
</trace>
<trace id="16">
12.7236 11.0388, 12.7357 11.0147, 12.7357 11.0268, 12.7196 11.0669, 12.6875 11.1431, 12.6434 11.2635, 12.6313 11.3718, 12.6353 11.4521, 12.6474 11.4802
</trace>
<trace id="17">
12.515 11.2796, 12.523 11.2675, 12.531 11.2675, 12.5631 11.2755, 12.6113 11.2715, 12.7276 11.2796, 12.8761 11.2715, 13.0526 11.2515
</trace>
<trace id="18">
13.4017 10.9305, 13.4098 10.9224, 13.3897 10.9465, 13.3536 11.0067, 13.2854 11.1471, 13.1931 11.3076, 13.153 11.4681, 13.177 11.5765, 13.2493 11.6367
</trace>
<trace id="19">
13.5662 11.5364, 13.502 11.5644, 13.4619 11.5925, 13.4619 11.5965, 13.482 11.5805, 13.5261 11.5323, 13.6224 11.4481, 13.7548 11.3117, 13.8953 11.1833, 13.9675 11.1311, 13.9675 11.1351, 13.9354 11.1512, 13.9033 11.2274, 13.8551 11.3478, 13.815 11.4802, 13.803 11.5604
</trace>
<trace id="20">
13.8672 11.5765, 13.9153 11.5243, 13.9916 11.4401, 14.0798 11.3277, 14.1802 11.2595, 14.2163 11.2394, 14.2123 11.2354, 14.2082 11.2394, 14.2002 11.2314, 14.2002 11.2274, 14.2082 11.2234, 14.2163 11.2154, 14.2323 11.2113, 14.2564 11.2073, 14.2604 11.1993, 14.2604 11.2033, 14.2524 11.2073, 14.2403 11.2314, 14.2203 11.2956, 14.1962 11.3959, 14.1721 11.5002, 14.1601 11.5524, 14.1601 11.5845, 14.1721 11.5925, 14.1802 11.5805, 14.2123 11.5484
</trace>
<trace id="21">
14.3968 11.1271, 14.4008 11.1191, 14.4129 11.115, 14.4289 11.111, 14.457 11.111, 14.5092 11.115, 14.5694 11.1351, 14.5934 11.1712, 14.6015 11.2314, 14.5654 11.3117, 14.5132 11.424, 14.4691 11.5444, 14.445 11.6206, 14.445 11.6567, 14.445 11.6607, 14.449 11.6407, 14.441 11.5925, 14.4089 11.5083, 14.3647 11.424, 14.3487 11.3959, 14.3447 11.3959, 14.3567 11.408, 14.3888 11.432, 14.453 11.4521, 14.5694 11.4681, 14.6857 11.4601
</trace>
<trace id="22">
15.1191 11.2354, 15.1151 11.2234, 15.1151 11.2113, 15.1231 11.2113, 15.1271 11.2073, 15.1351 11.2033, 15.1391 11.1953, 15.1712 11.2154
</trace>
<trace id="23">
15.1231 11.5604, 15.1351 11.5604, 15.1472 11.5604, 15.1592 11.5564, 15.1753 11.5484, 15.1873 11.5323, 15.2154 11.5163, 15.2475 11.5043, 15.2836 11.4962
</trace>
<trace id="24">
14.8422 11.4401, 14.8623 11.432, 14.8783 11.416, 14.8984 11.4039, 14.9345 11.3959, 15.0669 11.3879, 15.2796 11.3638
</trace>
<trace id="25">
15.4642 11.7049, 15.4682 11.7049, 15.4722 11.7049, 15.4842 11.6928, 15.5243 11.6527, 15.6086 11.5805, 15.7169 11.4521, 15.7932 11.3036, 15.8453 11.2033, 15.8494 11.1873, 15.8413 11.2033, 15.8253 11.2675, 15.8012 11.3919, 15.7811 11.4922, 15.7811 11.5685, 15.8012 11.5965
</trace>
<trace id="26">
15.9978 11.0749, 16.0339 11.0388, 16.0379 11.0629, 16.0379 11.1271, 16.0139 11.2234, 15.9657 11.3478, 15.9176 11.4681, 15.8815 11.5404, 15.8694 11.5644, 15.8895 11.5564, 15.9176 11.5444, 15.9617 11.5203, 16.0179 11.4922, 16.0741 11.4601, 16.1021 11.432, 16.1182 11.412, 16.1222 11.3959, 16.1182 11.3959, 16.1102 11.4039, 16.0901 11.4521, 16.0741 11.5083, 16.0741 11.5564, 16.0901 11.5885, 16.1423 11.5965
</trace>
<trace id="27">
16.2988 11.4401, 16.2907 11.4802, 16.2988 11.5323, 16.3309 11.5604, 16.3589 11.5685, 16.4031 11.5725, 16.4633 11.5444, 16.4954 11.5002, 16.4954 11.436, 16.4673 11.3879, 16.4071 11.3839, 16.3309 11.432, 16.2707 11.5002, 16.2626 11.5444, 16.2988 11.5765
</trace>
<trace id="28">
16.692 10.8502, 16.712 10.8221, 16.7321 10.8302, 16.7762 10.8903, 16.8324 11.0067, 16.8766 11.1592, 16.8966 11.3036, 16.8645 11.436, 16.8164 11.5524, 16.7722 11.6327, 16.7401 11.6487, 16.7161 11.6367
</trace>
<trace id="29">
17.2297 11.1512, 17.2417 11.1351, 17.2537 11.1231, 17.2818 11.115, 17.3219 11.1231, 17.3942 11.1592, 17.4784 11.2234, 17.5426 11.2876, 17.5547 11.3438, 17.5386 11.3799, 17.4985 11.428, 17.4263 11.4962, 17.3139 11.5604, 17.2377 11.6166, 17.1855 11.6527, 17.1855 11.6607
</trace>
<trace id="30">
18.0121 11.1632, 18.0602 11.1351, 18.0883 11.111, 18.0923 11.115, 18.0723 11.1271, 18.0281 11.1351, 17.984 11.1712, 17.9399 11.1913, 17.9318 11.2234, 17.9399 11.2515, 18.0041 11.2916, 18.1204 11.3397, 18.2248 11.3839, 18.2408 11.4039, 18.2047 11.416, 18.1485 11.4521, 18.0522 11.4922, 17.9479 11.5002, 17.8877 11.5002, 17.8516 11.4802
</trace>
<trace id="31">
18.1405 11.1351, 18.1285 11.103, 18.1244 11.0829, 18.1365 11.0749, 18.1766 11.0709, 18.2769 11.0709, 18.4374 11.0629
</trace>
<trace id="32">
18.5337 11.091, 18.4856 11.1552, 18.4214 11.2515, 18.3572 11.3718, 18.3411 11.4521, 18.3692 11.5043, 18.4374 11.5203, 18.5177 11.4842, 18.5778 11.428, 18.5979 11.3678, 18.5658 11.3157, 18.4856 11.2996, 18.3572 11.3317, 18.2448 11.408, 18.1846 11.4842
</trace>
<trace id="33">
18.8868 11.087, 18.9189 11.0549, 18.9189 11.0629, 18.9149 11.099, 18.8948 11.1993, 18.8748 11.3478, 18.8467 11.4561, 18.8186 11.5604, 18.8066 11.6246, 18.8186 11.6286
</trace>
<trace id="34">
19.0995 11.1792, 19.1235 11.1391, 19.1797 11.107, 19.2519 11.099, 19.3121 11.1271, 19.3482 11.1833, 19.3402 11.2515, 19.284 11.3518, 19.1877 11.4441, 19.1195 11.5283, 19.1035 11.5805, 19.1276 11.6006, 19.1797 11.6126, 19.272 11.6206, 19.3884 11.6086, 19.5087 11.5925, 19.589 11.5925
</trace>
<traceGroup xml:id="35">
<annotation type="truth">Segmentation</annotation>
<traceGroup xml:id="36">
<annotation type="truth">(</annotation>
<traceView traceDataRef="0"/>
<annotationXML href="(_1"/>
</traceGroup>
<traceGroup xml:id="37">
<annotation type="truth">(</annotation>
<traceView traceDataRef="0"/>
</traceGroup>
<traceGroup xml:id="38">
<annotation type="truth">6</annotation>
<traceView traceDataRef="1"/>
<annotationXML href="6_1"/>
</traceGroup>
<traceGroup xml:id="39">
<annotation type="truth">9</annotation>
<traceView traceDataRef="2"/>
<annotationXML href="9_1"/>
</traceGroup>
<traceGroup xml:id="40">
<annotation type="truth">+</annotation>
<traceView traceDataRef="3"/>
<traceView traceDataRef="4"/>
<annotationXML href="+_1"/>
</traceGroup>
<traceGroup xml:id="41">
<annotation type="truth">1</annotation>
<traceView traceDataRef="5"/>
<annotationXML href="1_1"/>
</traceGroup>
<traceGroup xml:id="42">
<annotation type="truth">7</annotation>
<traceView traceDataRef="6"/>
<traceView traceDataRef="7"/>
<annotationXML href="7_1"/>
</traceGroup>
<traceGroup xml:id="43">
<annotation type="truth">7</annotation>
<traceView traceDataRef="8"/>
<traceView traceDataRef="9"/>
<annotationXML href="7_2"/>
</traceGroup>
<traceGroup xml:id="44">
<annotation type="truth">\times</annotation>
<traceView traceDataRef="10"/>
<traceView traceDataRef="11"/>
<annotationXML href="\times_1"/>
</traceGroup>
<traceGroup xml:id="45">
<annotation type="truth">1</annotation>
<traceView traceDataRef="12"/>
<annotationXML href="1_2"/>
</traceGroup>
<traceGroup xml:id="46">
<annotation type="truth">3</annotation>
<traceView traceDataRef="13"/>
<annotationXML href="3_1"/>
</traceGroup>
<traceGroup xml:id="47">
<annotation type="truth">6</annotation>
<traceView traceDataRef="14"/>
<annotationXML href="6_2"/>
</traceGroup>
<traceGroup xml:id="48">
<annotation type="truth">)</annotation>
<traceView traceDataRef="15"/>
<annotationXML href=")_1"/>
</traceGroup>
<traceGroup xml:id="49">
<annotation type="truth">+</annotation>
<traceView traceDataRef="16"/>
<traceView traceDataRef="17"/>
<annotationXML href="+_2"/>
</traceGroup>
<traceGroup xml:id="50">
<annotation type="truth">(</annotation>
<traceView traceDataRef="18"/>
<annotationXML href="(_2"/>
</traceGroup>
<traceGroup xml:id="51">
<annotation type="truth">1</annotation>
<traceView traceDataRef="19"/>
<annotationXML href="1_3"/>
</traceGroup>
<traceGroup xml:id="52">
<annotation type="truth">7</annotation>
<traceView traceDataRef="21"/>
<annotationXML href="7_3"/>
</traceGroup>
<traceGroup xml:id="53">
<annotation type="truth">1</annotation>
<traceView traceDataRef="25"/>
<annotationXML href="1_5"/>
</traceGroup>
<traceGroup xml:id="54">
<annotation type="truth">4</annotation>
<traceView traceDataRef="26"/>
<annotationXML href="4_1"/>
</traceGroup>
<traceGroup xml:id="55">
<annotation type="truth">0</annotation>
<traceView traceDataRef="27"/>
<annotationXML href="0_1"/>
</traceGroup>
<traceGroup xml:id="56">
<annotation type="truth">)</annotation>
<traceView traceDataRef="28"/>
<annotationXML href=")_2"/>
</traceGroup>
<traceGroup xml:id="57">
<annotation type="truth">\gt</annotation>
<traceView traceDataRef="29"/>
<annotationXML href="\gt_1"/>
</traceGroup>
<traceGroup xml:id="58">
<annotation type="truth">6</annotation>
<traceView traceDataRef="32"/>
<annotationXML href="6_3"/>
</traceGroup>
<traceGroup xml:id="59">
<annotation type="truth">1</annotation>
<traceView traceDataRef="33"/>
<annotationXML href="1_6"/>
</traceGroup>
<traceGroup xml:id="60">
<annotation type="truth">2</annotation>
<traceView traceDataRef="34"/>
<annotationXML href="2_1"/>
</traceGroup>
<traceGroup xml:id="61">
<annotation type="truth">\div</annotation>
<traceView traceDataRef="22"/>
<traceView traceDataRef="24"/>
<traceView traceDataRef="23"/>
<annotationXML href="\div_1"/>
</traceGroup>
<traceGroup xml:id="62">
<annotation type="truth">5</annotation>
<traceView traceDataRef="30"/>
<traceView traceDataRef="31"/>
<annotationXML href="5_1"/>
</traceGroup>
<traceGroup xml:id="63">
<annotation type="truth">1</annotation>
<traceView traceDataRef="20"/>
<annotationXML href="1_4"/>
</traceGroup>
</traceGroup>
</ink>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter