mirror of
https://github.com/tesseract-ocr/tesseract.git
synced 2024-12-29 20:08:19 +08:00
131 lines
5.5 KiB
C
131 lines
5.5 KiB
C
/*====================================================================*
|
|
- Copyright (C) 2001 Leptonica. All rights reserved.
|
|
- This software is distributed in the hope that it will be
|
|
- useful, but with NO WARRANTY OF ANY KIND.
|
|
- No author or distributor accepts responsibility to anyone for the
|
|
- consequences of using this software, or for whether it serves any
|
|
- particular purpose or works at all, unless he or she says so in
|
|
- writing. Everyone is granted permission to copy, modify and
|
|
- redistribute this source code, for commercial or non-commercial
|
|
- purposes, with the following restrictions: (1) the origin of this
|
|
- source code must not be misrepresented; (2) modified versions must
|
|
- be plainly marked as such; and (3) this notice may not be removed
|
|
- or altered from any source or modified source distribution.
|
|
*====================================================================*/
|
|
|
|
#ifndef LEPTONICA_REGUTILS_H
|
|
#define LEPTONICA_REGUTILS_H
|
|
|
|
/*
|
|
* regutils.h
|
|
*
|
|
* Contains this regression test parameter packaging struct
|
|
* struct L_RegParams
|
|
*
|
|
*
|
|
* The regression test utility allows you to write regression tests
|
|
* that compare results with existing "golden files".
|
|
*
|
|
* Such regression tests can be called in three ways.
|
|
* For example, for distance_reg:
|
|
*
|
|
* Case 1: distance_reg generate
|
|
* This generates golden files in /tmp for the reg test.
|
|
*
|
|
* Case 2: distance_reg outfile.txt
|
|
* This runs the test against the set of golden files. It
|
|
* appends to 'outfile.txt' either "SUCCESS" or "FAILURE",
|
|
* as well as the details of any parts of the test that failed.
|
|
*
|
|
* Case 3: distance_reg
|
|
* This runs the test against the set of golden files. The
|
|
* minimal output, which in case 2 went to a file, is
|
|
* instead sent to stderr. In addition, this displays
|
|
* images and plots that are specified in the test under
|
|
* control of the @display variable. The @display is
|
|
* only enabled when the regression test is called without
|
|
* any arguments (case 3).
|
|
*
|
|
* Regression tests follow the pattern given below. In an actual
|
|
* case, comparisons of pix and of files can occur in any order.
|
|
* We give a specific order here for clarity.
|
|
*
|
|
* l_int32 success, display, count;
|
|
* FILE *fp; // stream only opened for case 2
|
|
* L_REGPARAMS *rp; // needed for either convenient argument
|
|
* // passthrough to subroutines or for
|
|
* // automated "write and check"
|
|
*
|
|
* // Setup variables; optionally open stream
|
|
* if (regTestSetup(argc, argv, &fp, &display, &success, &rp))
|
|
* return 1;
|
|
*
|
|
* // Test pairs of generated pix for identity. Here we label
|
|
* // the count on the golden files (0 and 1) explicitly.
|
|
* regTestComparePix(fp, argv, pix1, pix2, 0, &success);
|
|
* regTestComparePix(fp, argv, pix1, pix2, 1, &success);
|
|
*
|
|
* // Test pairs of generated pix for similarity. These
|
|
* // generate or test against golden files 2 and 3.
|
|
* regTestCompareSimilarPix(fp, argv, pix1, pix2, 15, 0.001, 2,
|
|
* &success, 0);
|
|
* regTestCompareSimilarPix(fp, argv, pix1, pix2, 15, 0.0005, 3,
|
|
* &success, 0);
|
|
*
|
|
* // Generation of <newfile*> outputs and testing for identity
|
|
* // These files can be anything, of course.
|
|
* regTestCheckFile(fp, argv, <newfile0>, 4, &success);
|
|
* regTestCheckFile(fp, argv, <newfile1>, 5, &success);
|
|
*
|
|
* // Test pairs of output golden files for identity. Here we
|
|
* // are comparing golden files 4 and 5.
|
|
* regTestCompareFiles(fp, argv, 4, 5, &success);
|
|
*
|
|
* // "Write and check". This writes a pix using a canonical
|
|
* // formulation for the local filename and either (a) generates a
|
|
* // golden file if requested or (b) tests the local file
|
|
* // against a golden file. Here we are generating or testing
|
|
* // golden files 6 and 7, which are pix that have been
|
|
* // compressed with png and jpeg, respectively. Each time that
|
|
* // regTestWritePixAndCheck() is called, the count is increased
|
|
* // by 1 and embedded in the local filename (and, if generating,
|
|
* // in the golden filename as well).
|
|
* count = 6; // initialize it
|
|
* regTestWritePixAndCheck(pix1, IFF_PNG, &count, rp);
|
|
* regTestWritePixAndCheck(pix2, IFF_JFIF_JPEG, &count, rp);
|
|
*
|
|
* // Display when reg test called with only one argument
|
|
* pixDisplayWithTitle(pix1, 100, 100, NULL, display);
|
|
*
|
|
* // Clean up and output result
|
|
* regTestCleanup(argc, argv, fp, success, rp);
|
|
*
|
|
* Note that the optional returned regparams (defined below) can be
|
|
* used to pass the parameters cleanly through to subroutines; e.g.,
|
|
*
|
|
* TestAll(Pix *pixs, L_RegParams *rp) {
|
|
* ...
|
|
* regTestCheckFile(rp->fp, rp->argv, fname, n, &rp->success);
|
|
* ...
|
|
* }
|
|
*
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
|
|
/*-------------------------------------------------------------------------*
|
|
* Regression test parameter packer *
|
|
*-------------------------------------------------------------------------*/
|
|
struct L_RegParams
|
|
{
|
|
FILE *fp;
|
|
char **argv;
|
|
l_int32 success;
|
|
l_int32 display;
|
|
};
|
|
typedef struct L_RegParams L_REGPARAMS;
|
|
|
|
|
|
#endif /* LEPTONICA_REGUTILS_H */
|
|
|