Data Recovery System

The data recovery system uses polynomial-based calculations to restore corrupted data units, addressing the limitations of Reed-Solomon coding by ensuring high-probability recovery even with extensive damage, thereby enhancing fault tolerance in data code reading.

JP2026110430APending Publication Date: 2026-07-02古川 和明

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
古川 和明
Filing Date
2024-12-22
Publication Date
2026-07-02

AI Technical Summary

Technical Problem

Existing data recovery systems using Reed-Solomon coding fail to reliably recover original data when more than half of the data is damaged or corrupted, limiting the acceptable range of damage and contamination.

Method used

A data recovery system that employs a data unit detection mechanism to identify and restore original data units using redundant data units through a polynomial-based calculation process, allowing recovery even when a significant portion of the original data is corrupted.

Benefits of technology

The system significantly enhances the probability of successful data recovery by ensuring all corrupted original data units can be restored if the number of corrupted units is less than or equal to the number of uncorrupted redundant units, thus improving fault tolerance in data code reading.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026110430000001_ABST
    Figure 2026110430000001_ABST
Patent Text Reader

Abstract

To provide a data recovery system that can reliably read the original data, even if the original data is heavily corrupted. [Solution] The original data unit and redundant data units prepared for each column are read from the data code, and the damaged original data unit is restored from the undamaged redundant data unit and the undamaged original data unit for each column of the data code through calculations using a 32-bit Galois field matrix. This configuration improves the probability of restoring the original data unit (fault tolerance) and the accuracy of reading the data code.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to a data recovery system for a data reading system that recovers information represented by a data code (hereinafter referred to as "original data") that has been damaged or soiled when the data code displayed on an item is read by an optical reader. [Background technology]

[0002] Data codes are used in a variety of applications because they allow for accurate and rapid reading of information. Examples of data codes include barcodes, which are one-dimensional patterns; two-dimensional patterns, which increase the amount of information they can hold; and character codes, which use numbers, letters, and other characters.

[0003] For example, a two-dimensional code called a QR code (registered trademark) is represented by a combination of rectangular unit cells and consists of a finder pattern (position detection pattern), alignment pattern, timing pattern, format information (error correction level, mask pattern, error correction format), and data and Reed-Solomon codes (error correction codes). Compared to so-called barcodes, QR codes (registered trademarks) can hold more information, and if a portion of the area where the data is recorded is damaged or soiled, it is possible to identify the undamaged area (data) and restore the original data. Furthermore, this results in the advantage of more accurate data reading. [Prior art documents] [Patent Documents]

[0004] [Patent Document 1] Japanese Patent Application Publication No. 7-254037 [Patent Document 2] Japanese Patent Publication No. 2017-097531 [Overview of the Initiative] [Problems that the invention aims to solve]

[0005] However, the Reed-Solomon coding used to restore the original data in the two-dimensional code reading process can identify and restore damaged areas even when the damaged areas cannot be identified. However, if more than half of the prepared redundant data are damaged, it becomes impossible to restore all of the damaged original data. Therefore, there is a problem in that the acceptable range of damage and contamination remains low.

[0006] This invention has been made in view of the above circumstances, and aims to provide a data recovery system that can reliably read the original data, with a configuration that allows for recovery even if a large amount of the original data is corrupted. [Means for solving the problem]

[0007] To solve the above problems, the data recovery system according to the present invention includes a data unit detection means for detecting original data units D[0,0]~D[M-1,N-1] arranged in M ​​rows (natural numbers) × N columns (natural numbers) from a single unit data code displayed on an item, and redundant data units Q[0,0]~Q[R-1,N-1] created for each column i (0≦i≦N-1) and arranged in R rows (natural numbers) × N columns (natural numbers) through an operation process of formula (1) where α is the solution to the generating polynomial of the Z / 2Z coefficient from the original data units D[0,0]~D[M-1,N-1] in order to recover the original data units D[0,0]~D[M-1,N-1], and arranged in R rows (natural numbers) × N columns (natural numbers).

[0008] The data unit detection means includes a determination means for detecting the corruption status of the i-th column of the original data unit and the redundant data unit, and an original unit restoration means for restoring the L original data units that were corrupted in the i-th column when L (natural number) units are corrupted in the i-th column of the original data unit D[0,0]~D[M-1,N-1], using R (number of redundant data units in the i-th column) - K (number of corrupted redundant data units in the i-th column) redundant data units that are not corrupted in the i-th column and ML original data units that are not corrupted in the i-th column. The data restoration means is characterized in that, when the damage status is L ≤ RK, it restores the damaged original data unit D[x[0],i],…,D[x[L-1],i] in the i-th column using the undamaged redundant data unit Q[a[0],i],…,Q[a[L-1],i] used to restore the damaged original data unit D[x[0],i],…,D[x[L-1],i] in the i-th column, and ML undamaged original data units D[y[0],i],…,D[y[ML-1],i] in the i-th column, through the calculation process of formula (2) (see Figure 4).

[0009]

number

[0010]

number

[0011] In equations (1) and (2) above, α is the solution to equation (47), which is the 32nd-degree generating polynomial of the Z / 2Z coefficients, when the original data unit and redundant data unit are expressed in 32-bit units; the solution to equation (48), which is the 16th-degree generating polynomial of the Z / 2Z coefficients, when the original data unit and redundant data unit are expressed in 16-bit units; and the solution to equation (49), which is the 8th-degree generating polynomial of the Z / 2Z coefficients, when the original data unit and redundant data unit are expressed in 8-bit units. In terms of the probability of successful reading, it is desirable to select a solution of the 32nd degree generating polynomial.

[0012]

number

[0013]

number

[0014]

number

[0015] According to the data recovery system of the present invention, when focusing on a single column i, if the condition (L ≤ RK) is met in the i-th column such that the number L of corrupted original data units is less than or equal to the number RK of uncorrupted redundant data units, then all corrupted original data units in the i-th column can be recovered.

[0016] Therefore, in applications and configurations of data codes where the damaged area can be identified, a significantly higher probability of recovering the original data unit (fault tolerance) can be obtained compared to Reed-Solomon coding (which can be used even when the damaged area cannot be identified; however, while it may be possible to recover up to half the number of damaged original data units compared to redundant data units, recovery is not possible if the number of damaged original data units exceeds half the number of redundant data units). As a result, data codes attached to items can be successfully read with a high probability. [Brief explanation of the drawing]

[0017] [Figure 1] This is an explanatory diagram showing an example of the arrangement of original data units and redundant data units in a data code used in the data recovery system according to the present invention. [Figure 2]This is an explanatory diagram illustrating an example of a method for determining whether a data code can be recognized (32-bit binary representation) in the recognition process used in the data recovery system according to the present invention. [Figure 3] This is an explanatory diagram illustrating an example of a method for determining whether a data code can be recognized (32-bit hexadecimal representation) in the recognition process used in the data recovery system according to the present invention. [Figure 4] This flowchart shows an example of the process flow for restoring the original data unit in the data recovery system according to the present invention. [Figure 5] This is an explanatory diagram showing an example (Example 1) of the arrangement of original data units and redundant data units in a data code used in the data recovery system according to the present invention. [Figure 6] This is an explanatory diagram showing an example (Example 1) of the determination status regarding the recognition of each column of the original data unit for the data code used in the data recovery system according to the present invention. [Figure 7] This is an explanatory diagram showing an example (Example 1) of a method for determining whether a column of a data code can be recognized for each original data unit, used in the data recovery system according to the present invention, by representing the determination status as a two-dimensional array. [Figure 8] This is an explanatory diagram showing an example (Example 1) of the determination status regarding the recognitionability of each column for redundant data units of data codes used in the data recovery system according to the present invention. [Figure 9] This is an explanatory diagram illustrating an example (Example 1) of a method for determining whether a column of redundant data units of a data code used in the data recovery system according to the present invention can be recognized, represented as a two-dimensional array. [Figure 10] This is an explanatory diagram showing an example (Example 1) of the recovery status of each column for the original data unit of the data code used in the data recovery system according to the present invention. [Figure 11] This is an explanatory diagram showing an example (Example 2) of the determination status regarding the recognition feasibility of each column for data codes used in the data recovery system according to the present invention. [Figure 12]This is an explanatory diagram showing an example (Example 2) of the corruption status and recovery status of each column of data code used in the data recovery system according to the present invention. [Figure 13] This is an explanatory diagram showing an example (Example 3) of the determination status regarding the recognition feasibility of each column for data codes used in the data recovery system according to the present invention. [Figure 14] This is an explanatory diagram showing an example (Example 3) of the corruption status and recovery status of each column of data code used in the data recovery system according to the present invention. [Figure 15] This is an explanatory diagram showing an example (Example 4) of the determination status regarding the recognition feasibility of each column for data codes used in the data recovery system according to the present invention. [Figure 16] This is an explanatory diagram (Example 4) showing an example of the corruption status and recovery status of each column of data code used in the data recovery system according to the present invention. [Figure 17] This is a table defining symbols that indicate the status of each column in the data code used in the data recovery system according to the present invention. [Figure 18] This flowchart shows the processing flow and other details of the data recovery system according to the present invention. [Figure 19] This is an explanatory diagram showing an example of a data recovery system according to the present invention. [Figure 20] This block diagram shows an example of the functional configuration of a data recovery system according to the present invention. [Figure 21] This is a comparison table showing the probability that the inverse matrix does not exist under matrix operations of a Galois field for each number of bits in the data recovery system according to the present invention. [Modes for carrying out the invention]

[0018] Hereinafter, embodiments of the data recovery system of the data code reading system (hereinafter referred to as the "reading system") according to the present invention will be described in detail with reference to the drawings.

[0019] <Hardware Configuration> The example shown in Figure 19 is a computer system comprising a personal computer (hereinafter referred to as "information processing device 1") that performs various processing and calculations on given data, a storage device 2 such as an HDD, memory, or external storage mounted on the information processing device 1, a data code reader (hereinafter referred to as "terminal device 3") that reads data units from data codes displayed on articles (including products, parts, documents, etc., or their packaging materials) in order to perform processing and calculations on the information processing device 1, and an information communication network through which these devices communicate.

[0020] <Functional Configuration> The reading system, when its program is activated, includes a data code acquisition means that captures image information of the data code via the terminal device 3, and a data unit detection means that detects the original data unit and redundant data units from the image information of the data code.

[0021] <Data code structure> The data code used here is a two-dimensional code in which the original data units D[0,0]~D[M-1,N-1] arranged in M ​​(natural number) rows × N (natural number) columns (see formula (3)) and redundant data units Q[0,0]~Q[R-1,N-1] arranged in R (natural number) rows × N (natural number) columns to reconstruct the original data units D[0,0]~D[M-1,N-1] (see formula (5)) are represented as a single unit (see Figure 1). Here, if j is the row index (0 ≤ j ≤ M-1) and i is the column index (0 ≤ i ≤ N-1), then D[j,i] ∈ GF(2 32 )

[0022]

number

[0023] The original data unit is a value that represents the information to be conveyed from the image, which is expressed as a data code, in 32-bit units. The original data unit can be displayed using binary representation with "0" or "1", hexadecimal representation with "0 to F", or a representation that illustrates these in a predetermined pattern (see Figure 2 or Figure 3). Furthermore, in binary representation, there are methods for determining recognition on a 1-bit basis (Figure 2(a)) and methods for determining recognition on a 32-bit basis (Figure 2(b)), and in hexadecimal representation, there are methods for determining recognition on a single-digit basis (Figure 3(a)) and methods for determining recognition on an eight-digit basis (Figure 3(b)), among others. In this example, the original data units D[0,0] to D[M-1,N-1] are arranged in an M-row and N-column configuration within the upper half of the code area of ​​the pre-configured data code (see Figure 1).

[0024] A redundant data unit is a 32-bit value created in advance from the undamaged original data units D[0,0] to D[M-1,N-1] in order to restore a damaged original data unit. The redundant data unit can be represented using binary representation with "0" and "1", hexadecimal representation with "0" to "F", or a representation illustrating these in a predetermined pattern (see Figure 2 or Figure 3). The redundant data units Q[0,0] to Q[R-1,N-1] are created from the original data units D[0,0] to D[M-1,N-1] for each column i (0≦i≦N-1) through the calculation process of formula (1). In this example, the redundant data units Q[0,0] to Q[R-1,N-1] are arranged in an R row and N column configuration within the lower half of the code area of ​​the pre-configured data code (see Figure 1).

[0025] In the redundant unit creation process that generates redundant data, the redundant unit creation means performs the following processes. [Matrix generation] The redundant unit creation means provides R (natural number) row number lists "0, 1, ..., R-1" for the redundant data unit and M (natural number) row number lists "0, 1, ..., M-1" for the original data unit, and obtains a matrix (formula (4)) by arranging the products of the elements of the row number lists of the redundant data unit and the elements of the row number lists of the original data unit in rows and columns.

[0026]

number

[0027] [Generation of Galois field matrices] The redundant unit creation means then creates a matrix (right-hand side (left) of equation (5)) by arranging powers of α (32-bit Galois field) whose exponents are the components of the matrix in question, and derives the product (equation (1)) of this matrix with the group of original data units in the i-th column (0≦i≦N-1) to create a redundant data unit (redundant unit creation algorithm). At that time, equation (5) is obtained by arranging equation (1) in parallel so that the operation of equation (1) is repeated in the range of 0≦i≦N-1 (repeated from i=0 to i=N-1).

[0028]

number

[0029]

number

[0030] <Calculation Processing> The reading and data recovery systems described herein use a 32-bit Galois field generated by a 32nd-degree generating polynomial of the Z / 2Z coefficients (equation (6)) as shown below in their calculations. f 32 If we let α be the solution to (x)=0, then we get equation (7). In this computation process, the operations on the Galois field alone are used to perform matrix operations (addition, multiplication, etc.) on the Galois field as an element. Still, in the description of this arithmetic processing, addition, multiplication, and exponentiation, s i and α i Variables such as the variable i are variables (orders) determined for convenience of explanation and are not "columns". e(k,j), α j , 2 j , P j and n j Variables such as the variable j are also variables (orders) determined for convenience of explanation and are not "rows".

[0031]

Number

[0032]

Number

[0033] The 32-bit Galois field is represented by the mathematical formula (8) and #(GF(2 32 )) = 2 32 and their coefficients are identified with (s 31 ] , s 30 , …, s1, s0) of the mathematical formula (9). In the processing in the information processing apparatus 1, it is calculated in (Z / 2Z) 32 .

[0034]

Number

[0035]

Number

[0036] [Relationship between the set of powers of α and GF(2 32 )] When i ≤ 31, the power of α, α i is clearly included in GF(2 32 ). When 32 ≤ i, by repeating the following conversion, α i is always in GF(2 32The requirement that it belongs to ) is met. That is, when the exponent of α is 32 or greater, using formula (10), α is given by formula (11). 32 By repeatedly performing the substitution, α in 32≦∀i i ∈GF(2 32 ) can be said.

[0037]

number

[0038]

number

[0039] [Properties of α] Also, 1≦∀i≦2 32 Within the range of -2, α i ≠1, α i ≠ 0 and equation (12) holds true. However, this is the generating polynomial f 32 This depends on the choice of (x), and generally this condition does not hold if a different generating polynomial is selected. That is, 1 ≤ ∀i ≤ 2 32 -2 for α i ≠1, therefore 1≦i <j≦2 32 -2⇒α i ≠α j (※)

[0040]

number

[0041] [The set of powers of α] Based on the above * conditions, #({α i |0≦i≦2 32 -2 ∪ {0} = 2 32 [Set of powers of α and GF(2 32 ) Relationship] The above statement regarding the case of 32≦i, as well as {α i |0≦i≦232 -2 ∪ {0} ⊂ GF(2 32 ) and the number of elements in the set mentioned above, {α i |0≦i≦2 32 -2 ∪ {0} = GF(2 32 ) can be said. In other words, GF(2 32 ) can be considered as the union of powers of α and zero.

[0042] <Addition> [Addition of polynomials of α] The addition of polynomials of α is as shown in equation (13) below.

[0043]

number

[0044] [(Z / 2Z) 32 [Addition] (Z / 2Z) 32 The addition is as shown in formula (14). [Relationship between addition of both] Addition of polynomials of α and (Z / 2Z) 32 The relationship with addition is as shown in equation (15). The coefficients can be separated as shown in equation (16). In the processing of the addition means in the information processing device 1, (Z / 2Z) 32 Calculate using this method.

[0045]

number

[0046]

number

[0047]

number

[0048] <Multiplication> 32-bit Galois field GF(2 32 Obtain the product c from any element a and element b of ). [Subject of multiplication] Element a, element b, and product c are given by formula (17). [Polynomial in variable x] In this case, the 32-bit Galois field GF(2 32 Let α be the generator of (Z / 2Z), and let x be a variable without constraints. 32 coefficient a0~a 31 Let A(x) and (Z / 2Z) be polynomials in x. 32 coefficient b0~b 31 Let's construct a polynomial B(x) in x, and let A(x)B(x) be the product of the two, then (Z / 2Z) 32 coefficient c0~c 62 We derive a polynomial C(x) in x.

[0049]

number

[0050] [Multiplication of polynomials in variable x] Here, we will use the multiplication of polynomials of the following variable x. First, regardless of α, the bit c of the coefficient 62 ..., in order to determine c0, we first expand equations (18) to (20) into a polynomial in terms of the variable x, and then perform calculations using the expression in terms of the variable x (arithmetic operation).

[0051]

number

[0052]

number

[0053]

number

[0054] [Substitute α for variable x] Substituting α for the variable x in the polynomial, we obtain equation (21).

[0055]

number

[0056] [Multiplication (converting α to a power of 31)] α k When the exponent of k is 32 ≤ k, we use equation (10) to determine the 31st degree polynomial using the coefficient e(k,j) that reduces the polynomial to a 31st degree polynomial, which is given by equation (22). In other words, e(k,j):=α k When expressed as a 31st-degree polynomial in α, α j If we set the coefficients to (0≦k≦62, 0≦j≦31), we get the following equation (23) (degree transformation process).

[0057]

number

[0058]

number

[0059]

number

[0060] [Matrix multiplication] As shown in formula (24) below, the matrix is ​​GF(2 32 )⇔(Z / 2Z) 32 By identifying these two elements, the result of multiplication of a 32-bit Galois field is derived. In this data recovery system, the multiplication process using this formula (23) is implemented in the information processing device 1 and used as a multiplication means. The multiplication means includes an arithmetic means that performs the calculation process, a degree conversion means that performs the degree conversion process, a data table that is stored in the storage device 2 and holds the values ​​of the matrix in the rightmost part of the bottom row of formula (24), and C(α) is the coefficient (c) of C(x).62 ... c 32 c 31 ... c1c0) and the α held in the data table k It includes a formatting means that outputs the result in the form of a product of the components of a matrix whose components are the coefficients (e(k,31) e(k,30) ... e(k,1) e(k,0)). The aforementioned matrix is ​​calculated using α k By creating and preparing a 256-byte data table consisting of 64 32-bit (including one dummy) values ​​representing the coefficients of C(x) for the range (0≦k≦62), it becomes possible to reliably perform multiplication with less memory than previous multiplication operations.

[0061]

number

[0062] <Exponentiation> [Squaring mapping] A mapping that squares terms is a "linear mapping" that preserves the sum and the coefficients of Z / 2Z. This is as shown in formula (25), and 1 2 =1,0 2 Because it equals 0.

[0063]

number

[0064] [2 j [The mapping that is raised to the power of something] Therefore, 2 j The mapping being raised is also a homomorphism (0≦∀j), where GF(2 32 In ), the result is as shown in equation (26). In conclusion, we can restrict it to 0 ≤ ∀j ≤ 31.

[0065]

number

[0066] [2 j[The matrix corresponding to the mapping being multiplied] 2 j Since the mapping to be raised is a homomorphism, GF(2 32 )⇔(Z / 2Z) 32 By identifying with 2 j The mapping to be performed is matrix P. j It can be represented as ∈M(Z / 2Z, 32×32). [Matrix P j How to find it] Let the power of α be expressed as equation (22), and the value of k included in the coefficient of each term be k = 31 * 2 j , …, k = 1 * 2 j , k=0*2 j When arranged vertically, it becomes equation (28). Equation (29) is obtained by applying the result of equation (28) to equation (27). matrix P j This is the right-hand part of the bottom line of equation (29). In addition, 2 j Since the mapping that is raised to power is a composition of two mappings that are raised to power j times, the matrix P j =(P1) j It can also be calculated as follows.

[0067]

number

[0068]

number

[0069]

number

[0070]

number

[0071] [Matrix P j [Exponentiation by] In this data restoration system, the power operation using this mathematical formula (29) is implemented in the power means of the information processing apparatus 1. At this time, the matrix P j constituting the GF(2 32 ) coefficient components (the rightmost part of the bottom row of the mathematical formula (29)) are stored in the storage device 2 of the PC as a data table holding the values of the matrices P0, P1,..., P 30 , P 31 . The matrix P j prepared as the data table (0 ≤ j ≤ 31) has, for each term of the mathematical formula (32) with respect to j, the coefficients of α 31 to α 0 in the mathematical formula (22), where k = 31 * 2 [[ID=ID=19]] j , k = 30 * 2 j ,..., k = 1 * 2 j , k = 0 * 2 j are fitted, and e(31 * 2 j , 31)... e(31 * 2 j , 0)... e(0 * 2 j , 31)... e(0 * 2 j , 0) are used as components. The matrix P j is a data table of 32 bits × 32 = 4 bytes × 32 = 128 bytes respectively. Also, since 0 ≤ j ≤ 31 and the matrices P0, P1,..., P 30 , P 31 are provided, the total size of the data table used for the power operation processing is 128 bytes × 32 = 4096 bytes. This is a size that poses no problem during implementation. In this data restoration system, the power means for performing the power operation includes a decomposition means that converts the power operation count n of the mathematical formula (30) given as the power operation target a into its binary notation according to the mathematical formula (31), and for each j where the coefficient n j (0 ≤ j ≤ 31) of the binary notation of the power operation count n obtained by the decomposition means is "1", all a^2 j is multiplied by the coefficients (a j ... a1a0) of each term of the power operation target a (mathematical formula (30)) and the matrix P 31 held in the data table, with the values of the matrix P j as components (a31 …a1a0)P j A formatting means that outputs in the form of, and all a^2 output from the formatting means j It includes a multiplication means that multiplies the result by a value and outputs the result (the value of the exponentiation process is multiplied by the memory variable power and power is updated).

[0072]

number

[0073]

number

[0074]

number

[0075]

number

[0076] [General method for calculating indices] The algorithm for having a PC perform general exponentiation calculations is as follows: In this case, the algorithm is given the following input 1: the object to be raised to power a (formula (33)) and input 2: the number of times to raise to power n (formula (31)), and the output is a n This leads to "n j "(0≦j≦31)" is a binary coefficient that is either 1 or 0.

[0077]

number

[0078] Output: a n Local variable 1: power_two(a^2 j (Enter the value as needed) Here, "^" represents exponentiation. Local variable 2: power(eventually a n (The return value will be) Local variable 3: j (loop variable)

[0079] If (a == 0) { return 0; } / / Here, a≠0 Power = 1; For(j=0;j≦31;j++) { if(n j ==1) { power_two= (a 31 , …,a1,a0)P j ; / / power_two⇔a^2 j power = power × power_two; / / × is GF(2 32 Multiplication of the components of ) } / / By induction on j, the power immediately after the end of the jth loop is given by equation (34) } / / for / / The power immediately after the end of the 31st loop is a n . Return Power;

[0080]

number

[0081] <Detection of data units> The data code acquisition means of this reading system acquires image information of the data code using an imaging means and reads the data code (obtaining the value of the data code, etc.) through image analysis processing. The data unit detection means reads the data code, which consists of the original data units D[0,0] to D[M-1,N-1] arranged in M ​​rows (natural numbers) x N columns (natural numbers) and redundant data units Q[0,0] to Q[R-1,N-1] arranged in R rows (natural numbers) x N columns (natural numbers), for each column i (0≦i≦N-1) of the data code.

[0082] The data unit detection means includes a determination means that focuses on the i-th column, detects the damage status of the original data units and redundant data units, and creates various lists to represent the damage status of the i-th column (determination process), and an original unit restoration means that, when L (natural number) units are damaged in the i-th column of the original data unit and K (natural number) units are damaged in the i-th column of the redundant data unit, and the result of the determination process by the determination means (damage status) is L ≤ RK, restores RK (natural number) redundant data units that are not damaged in the i-th column (in this example, L units are taken from the RK redundant data units and used for restoration), and restores the L damaged original data units D[x[0],i],...,D[x[L-1],i] from ML (natural number) original data units that are not damaged in the i-th column (restore process) (see Figure 4(a)).

[0083] [Decision Processing] The determination means performs a determination process for each element of the data code (determination unit in binary and hexadecimal representation) for each column i (0 ≤ i ≤ N-1) to determine whether it is corrupted or not. In this determination process, the determination means creates a number list (original data corruption list) list_x={x[0],…,x[L-1]} that stores the row numbers of L original data units that are corrupted in the i-th column in ascending order. At the same time, it creates a number list (original data non-corruption list) list_y={y[0] ,…,y[ML-1]} that stores the row numbers of ML original data units that are not corrupted in the i-th column in ascending order (see Figure 4). The size of the corrupted source data list_x (number of corrupted source data units in column i) is determined by the extracted configuration data "L", and the size of the uncorrupted source data list_y (number of uncorrupted source data units in column i) is determined by "ML" based on the pre-entered configuration data "M" (number of rows) (see Figure 4(b)).

[0084] Furthermore, the determination means creates a number list (redundant data corruption list) list_b={b[0] ,…,b[K-1]} that stores the row numbers of the K corrupted redundant data units in the i-th column in ascending order. At the same time, it creates a number list (redundant data non-corrupted list) list_a={a[0] ,…,a[RK-1]} that stores the row numbers of the uncorrupted redundant data units in the i-th column in ascending order (see Figure 4). The size of the redundant data corruption list list_b (number of corrupted redundant data units in column i) is determined by the extracted configuration data "K", and the size of the redundant data non-corrupted list list_a (number of non-corrupted redundant data units in column i) is determined by "RK" based on the pre-entered configuration data "R" (number of rows) (see Figure 4(b)).

[0085] The determination means generates a two-dimensional array Ds in the above determination process, with the elements being values ​​Ds[j,i] determined according to the corruption status of each of the original data units D[0,0] to D[M-1,N-1]. The value Ds[j,i], determined according to the degree of damage, is Ds[j,i]=1 when D[j,i] is not damaged (undamaged), and Ds[j,i]=2 when D[j,i] is damaged (damaged). Furthermore, when D[j,i] was damaged but restored by the original unit restoration means (restored from damage), Ds[j,i]=3 (see Figures 7 and 10). Here, j is 0≦j≦M-1.

[0086] The determination method extracts the row numbers x[0], ..., x[L-1] of the original data units (damaged) from the original data units D[0,i] to D[M-1,i] where the element Ds[j,i] is "2", according to the damage status of each undamaged data unit. A list of these row numbers is created as the original data damage list, listx={[0], ..., x[L-1]}, where "L" is the number of damaged original data units in the i-th column. Furthermore, the determination means extracts the row numbers y[0], ..., y[ML-1] of the original data units (that are not damaged) from the original data units D[0,i] to D[M-1,i] where the element Ds[j,i] is "1", according to the damage status of each undamaged data unit, and creates a list of these as elements, sorted in ascending order, as the original data undamaged list list_y={y[0], ..., y[ML-1]} (see Figure 4(b)). Here, "ML" is the number of undamaged original data units in the i-th column.

[0087] Furthermore, the determination means generates a two-dimensional array Qs in the determination process described above, with the elements being values ​​Qs[h,i] determined according to the corruption status of each redundant data unit Q[0,0] to Q[R-1,N-1]. The value Qs[h,i], determined according to the degree of damage, is Qs[h,i]=4 when Q[h,i] is not damaged (undamaged), and Qs[h,i]=5 when Q[h,i] is damaged (damaged) (see Figure 9). Here, h is 0≦h≦R-1. Furthermore, since redundant data units are not subject to restoration in this system, Qs[h,i]=4 and 5 remain unchanged.

[0088] The determination method extracts the row numbers b[0], ..., b[K-1] of the redundant data units (which are corrupted) from the redundant data units Q[0,i] to Q[R-1,i] where the element Qs[h,i] is "5", according to the corruption status of each non-corrupted data unit. A list is created by arranging these row numbers in ascending order as the redundant data corruption list list_b={b[0], ..., b[K-1]}. Here, "K" is the number of corrupted redundant data units in the i-th column. Furthermore, the determination method extracts the row numbers a[0], ..., a[RK-1] of redundant data units (that are not damaged) from the redundant data units Q[0,i] to Q[R-1,i] where the element Qs[h,i] is "4", according to the damage status of each non-damaged data unit, and creates a list of these elements sorted in ascending order as the redundant data non-damaged list list_a={a[0], ..., a[RK-1]}. Here, "RK" is the number of non-damaged redundant data units in the i-th column.

[0089] [Restoration process] When the damage status is L ≤ RK, the original unit restoration means extracts ML original data units D[y[0],i],…,D[y[ML-1],i] that are not damaged in the i-th column, based on the list of undamaged original data list_y={y[0],…,y[ML-1]} created by the determination means. Furthermore, the original unit restoration means extracts L elements a[0],…,a[L-1] from the beginning of the RK elements a[0],…,a[RK-1] of list_a, which has RK elements, and creates a number list (redundant data undamaged use list) use_list_a={a[0] ,…,a[L-1]} that stores the row numbers of the L undamaged redundant data units in the i-th column in ascending order (see Figure 4(a)). Then, based on this redundant data undamaged use list use_list_a, it extracts L undamaged redundant data units Q[a[0],i],…,Q[a[L-1],i] from the RK undamaged redundant data units Q[a[0],i],…,Q[a[RK-1],i] in the i-th column to be used to restore the original data unit. Here, based on the original data corruption list list_x={x[0] ,…,x[L-1]} created by the determination means, the L original data units that are corrupted in the i-th column are defined as D[x[0],i],…,D[x[L-1],i], and based on the redundant data corruption list list_b={b[0] ,…,b[K-1]} created by the determination means, the K redundant data units that are corrupted in the i-th column are defined as Q[b[0],i],…,Q[b[K-1],i].

[0090] When the damage level is L ≤ RK, the original unit restoration means then uses the L redundant data units Q[a[0],i], ..., Q[a[L-1],i] extracted from the i-th column and the ML undamaged original data units D[y[0],i], ..., D[y[ML-1],i] from the i-th column to restore the L damaged original data units D[x[0],i], ..., D[x[L-1],i] from the i-th column through the calculation process of formula (2) (see Figure 4).

[0091]

number

[0092] When the damage status is L ≤ RK, the original unit restoration means extracts only L rows belonging to the extraction list use_list_a from formula (1) used when creating redundant data units in the above restoration process, and derives formula (36) separated by accessibility (recognition) (step 1).

[0093] In this process, the original unit restoration means extracts L rows belonging to the extraction list use_list_a from formula (1) used when creating redundant data units, creates a matrix, shifts the corrupted elements to the left in ascending order, shifts the uncorrupted elements to the right in ascending order, shifts the elements of the corrupted original data unit to the top, shifts the elements of the uncorrupted original data unit to the bottom, and arranges them together in ascending order.

[0094] Next, the original unit restoration means creates a matrix Mat(list_x,use_list_a) for the damaged original data units from the list of damaged original data unit numbers list_x and the extraction list use_list_a, and creates a matrix Mat(list_y,use_list_a) for the undamaged original data units from the list of undamaged original data unit numbers list_y and the extraction list use_list_a (see formula (36)).

[0095]

number

[0096] Furthermore, by transposing terms, Mat(list_y,use_list_a) and Mat(list_x,use_list_a) are separated into a form that straddles the "=" sign, as shown in equation (37) (step 2). Subsequently, the inverse matrix Mat(list_x,use_list_a) is obtained by making full use of addition and multiplication of Galois field matrices. -1 Generate a matrix and, on both sides of the equals sign, add Mat(list_x,use_list_a) -1 Multiplying by this, we obtain the original data unit D[x[0],i],...,D[x[L-1],i] which was unrecognizable as shown in equation (2) (step 3). These processes are repeated for 0 ≤ i ≤ N-1 (from column 1 to column N) to obtain all original data units. In this process, the lists representing the corruption status will differ for each column i (the position of the data unit).

[0097]

number

[0098]

number

[0099] An exceptional situation in Steps 1-3 is that in the i-th column (0 ≤ i ≤ N-1), it may be possible to reconstruct the list using list_y = {}. That is, when list_x = {0, 1, ..., M-1}, L = M ≤ #list_a = RK. In this case, the matrix is ​​always invertible in the form of Vandermonde, and multiplying both sides of equation (38) by the inverse matrix of this matrix Mat(list_x,use_list_a) yields equation (39), completing the reconstruction of the original data unit. Furthermore, formula (38) is derived from formula (1), which is used to create redundant data units for the data codes shown in Figure 1, by extracting only the rows a[0],...,a[L-1].

[0100]

number

[0101]

number

[0102] The following describes the restoration process in columns 0 and 1 of the example shown in Figures 5 to 10 (hereinafter referred to as "Example 1"). The example shown here uses two data units as data codes: the original data unit D[0,0]~D[6,2] (see Figure 6(a)), which consists of 7 (=M) rows and 3 (=N) columns, and the redundant data unit Q[0,0]~Q[3,2] (see Figure 8(a)), which consists of 4 (=R) rows and 3 (=N) columns, arranged vertically with their columns aligned (see Figure 5).

[0103] The redundant unit creation method focuses on the original data units D[0,i] to D[6,i] in the i-th column (0≦i≦N-1=2) of the original data unit D[0,0] to D[6,2], which is composed of 7 (=M) rows and 3 (=N) columns, and creates the redundant data units Q[0,i] to Q[3,i] in the i-th column using formula (35). The redundant unit creation means repeats the calculation of the mathematical formula (35) for 0 ≦ i ≦ 2 to obtain all the redundant data units Q[0,0] to Q[3,2] composed of 4 (=R) rows and 3 (=N) columns.

[0104]

Number

[0105] The original unit restoration means extracts only the rows belonging to the extraction list use_list_a for each column from the mathematical formula (35) for creating the redundant data unit of the data code shown in FIG. 5, and separates them according to the presence or absence of damage as in the mathematical formula (40). Then, in the 0th column, the damaged original data units D[x[0],0](=D[1,0]), D[x[1],0](=D[4,0]), D[x[2],0](=D[5,0]) can be restored in the flow from the mathematical formula (40) to the mathematical formula (43). In the 1st column, the damaged original data units D[x[0],1](=D[2,1]), D[x[1],1](=D[6,1]) can be restored in the flow from the mathematical formula (44) to the mathematical formula (46). In the 2nd column (when i = 2), since the damaged state is R - K < L, the original unit restoration means gives up restoration. Note that the restoration process is the same in other embodiments. In this way, by sequentially passing through the same arithmetic processing for each column i, the damaged original data units D[x[0],i], D[x[1],i], D[x[2],i], …, D[x[L - 1],i] in the i-th column can be restored.

[0106] In the 0th column of the first embodiment, let the number list list_x = {x[0], x[1], x[2]} = {1, 4, 5}, the number of damaged original data units L = 3, the number list list_y = {y[0], y[1], y[2], y[3]} = {0, 2, 3, 6} (see FIG. 6), the extraction list use_list_a = {a[0], a[1], a[2]} = {0, 1, 3}, and the number of damaged redundant data units K = 1 (see FIG. 8).

[0107]

number

[0108]

number

[0109]

number

[0110]

number

[0111] In the first column of Example 1, the number list list_x = {x[0], x[1]} = {2, 6}, the number of corrupted original data units L = 2, the number list list_y = {y[0], y[1], y[2], y[3], y[4]} = {0, 1, 3, 4, 5} (see Figure 6), the extraction list use_list_a = {a[0], a[1]} = {0, 2}, and the number of corrupted redundant data units K = 1 (see Figure 8).

[0112]

number

[0113]

number

[0114]

number

[0115] [Stop the restoration process] When list_x and use_list_a are randomly selected, the inverse matrix of Mat(list_x,use_list_a) is Mat(list_x,use_list_a).-1 The probability that it does not exist is approximately 2 -32 However, exhaustive checking confirmed that if {M≦14}∧{R≦14}, then the inverse matrix must exist.

[0116] [Restoration Results] In Example 1 (Figures 5 to 9), the restoration result by the original unit restoration means changes as shown in Figure 10, with the numerical value {1, 2, 3} of Ds[j,i] serving as status information. In addition, after similar processing, Example 2 (Figure 11), where M=4, R=3, N=10 was set, is shown in Figure 12; Example 3 (Figure 13), where M=5, R=5, N=2 was set, is shown in Figure 14; and Example 4 (Figure 15), where M=4, R=6, N=7 was set, is shown in Figure 16.

[0117] In Figures 10, 12, 14, and 16, "remains as 1" means "it was not originally damaged and did not require restoration," "remains as 2" means "it was originally damaged and was terminated without restoration," and "2→3" means "it was originally damaged and was restored and terminated." The “Column Status” (a) to (d) in Figures 8, 11, 13, and 15 are defined as shown in Figure 17.

[0118] The above is an example using a 32-bit Galois field for the arithmetic processing of the original data unit, but it is also possible to use a 16-bit Galois field or an 8-bit Galois field for the arithmetic processing of the original data unit. When adopting a 32-bit Galois field (when the original data unit and the redundant data unit are values expressed in 32-bit units), for α in Formula (1) and Formula (2), solutions such as those of Formula (47) which is a generating polynomial can be used. When adopting a 16-bit Galois field (when the original data unit and the redundant data unit are values expressed in 16-bit units), solutions such as those of Formula (48) which is a generating polynomial can be used. When adopting an 8-bit Galois field (when the original data unit and the redundant data unit are values expressed in 8-bit units), solutions such as those of Formula (49) which is a generating polynomial can be used.

[0119]

Number

[0120]

Number

[0121]

Number

[0122] At that time, the operations of the Galois field and the matrix operations of the Galois field are performed in the same manner as in the case of the 32-bit Galois field. However, the number of digits in hexadecimal notation is 4 digits for 16 bits and 2 digits for 8 bits, and the probability that the necessary inverse matrix does not exist is approximately 2 -16 for 16 bits and 2 -8 for 8 bits, (see Figure 21).

Explanation of Signs

[0123] 1 Information processing device, 2 Storage device, 3 Terminal device,

Claims

1. The system includes a data unit detection means for detecting original data units D[0,0] to D[M-1,N-1] arranged in M ​​rows (natural numbers) x N columns (natural numbers) from a single data code displayed on an item, and redundant data units Q[0,0] to Q[R-1,N-1] created for each column i (0≦i≦N-1) and arranged in R rows (natural numbers) x N columns (natural numbers) through a calculation process using formula (1) where α is the solution to the generating polynomial of the Z / 2Z coefficients, in order to reconstruct the original data units D[0,0] to D[M-1,N-1], and arranged in R rows (natural numbers) x N columns (natural numbers). The data unit detection means includes a determination means for detecting the corruption status of the i-th column of the original data unit and the redundant data unit, and an original unit restoration means for restoring the L original data units that were corrupted in the i-th column from "R (number of redundant data units in the i-th column) - K (number of corrupted redundant data units in the i-th column)" redundant data units that were not corrupted in the i-th column and "M - L" original data units that were not corrupted in the i-th column, when L (natural number) original data units in the i-th column of the original data unit D[0,0] to D[M-1,N-1] are corrupted. The original unit restoration means is characterized in that, when the damage status is L ≤ R - K, it restores the damaged original data unit D[x[0],i], ..., D[x[L-1],i] in the i-th column using the undamaged redundant data units Q[a[0],i], ..., Q[a[L-1],i] in the i-th column and the M-L undamaged original data units D[y[0],i], ..., D[y[M-L-1],i] in the i-th column, through the calculation process of formula (2). 【Number 1】 [Math 2]

2. In the above formulas (1) and (2), α is, If the original data unit and redundant data unit are values ​​represented in 32-bit units, then the solution is to equation (47), which is the 32nd-degree generating polynomial of the Z / 2Z coefficients. If the original data unit and redundant data unit are values ​​represented in 16-bit units, then the solution is to equation (48), which is the 16th-degree generating polynomial of the Z / 2Z coefficients. The data recovery system according to claim 1, characterized in that, when the original data unit and redundant data unit are values ​​expressed in 8-bit units, they are the solution to equation (49), which is an 8th-degree generating polynomial of the Z / 2Z coefficient. [Math 3] [Math 4] [Math 5]