Create python package

Add version support

Add new test file

[RFC] First phase

[RFC] Second phase

[RFC] Third phase

Add logging

Update README

Add debug

Add debug, fixes

Add pep8 changes

Add fix

Rename CLI tool

Add csv fix

Update README

Add fix for numpages

Update README

Update requirements.txt

Use yield

Add tuple unpacking fix

Fix n00b mistake

Add check for None

Fix check for None

Fix unicode

Add relative imports
pull/2/head
Vinayak Mehta 2016-07-29 21:09:39 +05:30 committed by GitHub
parent c612692c42
commit e9602bb353
345 changed files with 136685 additions and 902 deletions

4
.gitignore vendored
View File

@ -2,4 +2,6 @@ __pycache__/
*.py[cod]
*.so
.camelot/
build/
dist/
*.egg-info/

View File

@ -4,25 +4,39 @@
Currently, camelot works under Python 2.7.
The required dependencies include pdfminer, numpy, opencv.
For debugging, matplotlib is required. For runnings tests in the future, nose may be required.
The required dependencies include numpy, opencv, and imagemagick.
## Install
Make sure you have the required dependencies installed on your system. If you're working in a virtual environment, copy the `cv2.so` file from your system's site-packages to the virtualenv's site-packages. After that, `cd` into the project directory and issue the following command.
<pre>
python setup.py install
</pre>
## Usage
<pre>
camelot.py [options] <method> [<args>...]
from camelot import *
extractor = Lattice(Pdf("/path/to/pdf", pagenos=[{'start': 2, 'end': 4}]))
tables = extractor.get_tables()
</pre>
<pre>
camelot parses tables from PDFs!
usage:
camelot.py [options] <method> [<args>...]
options:
-h, --help Show this screen.
-v, --version Show version.
-p, --pages &lt;pageno&gt; Comma-separated list of page numbers.
Example: -p 1,3-6,10 [default: 1]
-f, --format &lt;format&gt; Output format. (csv,xlsx) [default: csv]
-l, --log Print log to file.
-o, --output &lt;directory&gt; Output directory.
-h, --help Show this screen.
-v, --version Show version.
-p, --pages &lt;pageno&gt; Comma-separated list of page numbers.
Example: -p 1,3-6,10 [default: 1]
-f, --format &lt;format&gt; Output format. (csv,tsv,html,json,xlsx) [default: csv]
-l, --log Print log to file.
-o, --output &lt;directory&gt; Output directory.
camelot methods:
lattice Looks for lines between data.

View File

@ -1,264 +0,0 @@
#!/usr/bin/env python2
import os
import re
import csv
import sys
import glob
import time
import shutil
import logging
import zipfile
import tempfile
from docopt import docopt
from werkzeug.utils import secure_filename
from PyPDF2 import PdfFileWriter, PdfFileReader
from lattice import lattice
from stream import stream
doc = """
camelot parses tables from PDFs!
usage:
camelot.py [options] <method> [<args>...]
options:
-h, --help Show this screen.
-v, --version Show version.
-p, --pages <pageno> Comma-separated list of page numbers.
Example: -p 1,3-6,10 [default: 1]
-f, --format <format> Output format. (csv,xlsx) [default: csv]
-l, --log Print log to file.
-o, --output <directory> Output directory.
camelot methods:
lattice Looks for lines between data.
stream Looks for spaces between data.
See 'camelot <method> -h' for more information on a specific method.
"""
lattice_doc = """
Lattice method looks for lines between data to form a table.
usage:
camelot.py lattice [options] [--] <file>
options:
-F, --fill <fill> Fill data in horizontal and/or vertical spanning
cells. Example: -F h, -F v, -F hv
-s, --scale <scale> Scaling factor. Large scaling factor leads to
smaller lines being detected. [default: 15]
-j, --jtol <jtol> Tolerance to account for when comparing joint
and line coordinates. [default: 2]
-m, --mtol <mtol> Tolerance to account for when merging lines
which are very close. [default: 2]
-i, --invert Invert pdf image to make sure that lines are
in foreground.
-d, --debug <debug> Debug by visualizing pdf geometry.
(contour,line,joint,table) Example: -d table
"""
stream_doc = """
Stream method looks for spaces between data to form a table.
usage:
camelot.py stream [options] [--] <file>
options:
-n, --ncols <ncols> Number of columns. [default: 0]
-c, --columns <columns> Comma-separated list of column x-coordinates.
Example: -c 10.1,20.2,30.3
-M, --cmargin <cmargin> Char margin. Chars closer than cmargin are
grouped together to form a word. [default: 2.0]
-L, --lmargin <lmargin> Line margin. Lines closer than lmargin are
grouped together to form a textbox. [default: 0.5]
-W, --wmargin <wmargin> Word margin. Insert blank spaces between chars
if distance between words is greater than word
margin. [default: 0.1]
-d, --debug Debug by visualizing textboxes.
"""
pno = re.compile(r'\d+')
def filesort(filepath):
filename = os.path.basename(filepath)
num = pno.findall(filename)
if len(num) == 2:
return (int(num[0]), int(num[1]))
else:
return (int(num[0]), 0)
if __name__ == '__main__':
start_time = time.time()
tmpdir = tempfile.mkdtemp()
args = docopt(doc, version='0.1', options_first=True)
argv = [args['<method>']] + args['<args>']
if args['<method>'] == 'lattice':
args.update(docopt(lattice_doc, argv=argv))
elif args['<method>'] == 'stream':
args.update(docopt(stream_doc, argv=argv))
if args['--pages']:
if args['--pages'] == ['all']:
p = args['--pages']
else:
p = []
for r in args['--pages'].split(','):
if '-' in r:
a, b = r.split('-')
a, b = int(a), int(b)
p.extend([str(i) for i in range(a, b + 1)])
else:
p.extend([str(r)])
else:
p = ['1']
p = sorted(set(p))
fname = os.path.basename(args['<file>'])
fname = secure_filename(fname)
fdir = os.path.dirname(args['<file>'])
froot, fext = os.path.splitext(fname)
if fext.lower() != '.pdf':
print "camelot can parse only pdfs right now"
shutil.rmtree(tmpdir)
sys.exit()
logfname = os.path.join(tmpdir, froot + '.log')
logging.basicConfig(filename=logfname, filemode='w', level=logging.DEBUG)
shutil.copy(args['<file>'], os.path.join(tmpdir, fname))
print "separating pdf into pages"
print
if p == ['all']:
infile = PdfFileReader(open(os.path.join(tmpdir, fname), 'rb'))
for i in range(infile.getNumPages()):
p = infile.getPage(i)
outfile = PdfFileWriter()
outfile.addPage(p)
with open(os.path.join(tmpdir, 'pg-%d.pdf' % (i + 1)), 'wb') as f:
outfile.write(f)
else:
for page in p:
infile = PdfFileReader(open(os.path.join(tmpdir, fname), 'rb'))
p = infile.getPage(int(page) - 1)
outfile = PdfFileWriter()
outfile.addPage(p)
with open(os.path.join(tmpdir, 'pg-%s.pdf' % page), 'wb') as f:
outfile.write(f)
glob_pdf = sorted(glob.glob(os.path.join(tmpdir, 'pg-*.pdf')))
if args['<method>'] == 'lattice':
print "using the lattice method"
for g in glob_pdf:
g_fname = os.path.basename(g)
print "working on", g_fname
g_froot, __ = os.path.splitext(g)
try:
data = lattice(g, f=args['--fill'], s=int(args['--scale']),
jtol=int(args['--jtol']), mtol=int(args['--mtol']),
invert=args['--invert'], debug=args['--debug'])
if data is None:
print
continue
for k in sorted(data.keys()):
csvfile = g_froot + '_%s.csv' % k
with open(csvfile, 'w') as outfile:
writer = csv.writer(outfile)
for d in data[k]:
writer.writerow([c.encode('utf-8') for c in d])
print "saved as", os.path.basename(csvfile)
print
except Exception:
logging.exception("")
print "couldn't parse", g_fname, "see log for more info"
print
elif args['<method>'] == 'stream':
print "using the stream method"
for g in glob_pdf:
g_fname = os.path.basename(g)
print "working on", g_fname
g_froot, __ = os.path.splitext(g)
try:
data = stream(g, ncolumns=int(args['--ncols']), columns=args['--columns'],
char_margin=float(args['--cmargin']),
line_margin=float(args['--lmargin']),
word_margin=float(args['--wmargin']),
debug=args['--debug'])
if data is None:
print
continue
csvfile = g_froot + '.csv'
with open(csvfile, 'w') as outfile:
writer = csv.writer(outfile)
for d in data:
writer.writerow([c.encode('utf-8') for c in d])
print "saved as", os.path.basename(csvfile)
print
except Exception:
logging.exception("")
print "couldn't parse", g_fname, "see log for more info"
print
if args['--log']:
if args['--output']:
shutil.copy(logfname, args['--output'])
else:
shutil.copy(logfname, fdir)
if args['--debug'] not in [None, False]:
print "See 'camelot <method> -h' for various parameters you can tweak."
shutil.rmtree(tmpdir)
sys.exit()
glob_csv = sorted(glob.glob(os.path.join(tmpdir, '*.csv')), key=filesort)
if args['--format'] == 'csv':
if len(glob_csv) == 1:
if args['--output']:
shutil.copy(glob_csv[0], args['--output'])
else:
shutil.copy(glob_csv[0], fdir)
else:
zipname = froot + '.zip'
zippath = os.path.join(tmpdir, zipname)
print "zipping 'em up"
with zipfile.ZipFile(zippath, 'a', zipfile.ZIP_DEFLATED) as myzip:
for g in glob_csv:
myzip.write(g, os.path.join(froot, os.path.basename(g)))
if args['--output']:
shutil.copy(zippath, args['--output'])
else:
shutil.copy(zippath, fdir)
print
elif args['--format'] == 'xlsx':
from pyexcel_xlsx import save_data
from collections import OrderedDict
data = OrderedDict()
for c in glob_csv:
c_fname = os.path.basename(c)
c_froot, __ = os.path.splitext(c)
print "adding", c_fname, "to excel file"
with open(c, 'r') as csvfile:
reader = csv.reader(csvfile)
c_froot, __ = os.path.splitext(c_fname)
data.update({c_froot: [row for row in reader]})
xlsxname = froot + '.xlsx'
xlsxpath = os.path.join(tmpdir, xlsxname)
save_data(xlsxpath, data)
if args['--output']:
shutil.copy(xlsxpath, args['--output'])
else:
shutil.copy(xlsxpath, fdir)
print
print "saved as", xlsxname
print "cleaning up..."
shutil.rmtree(tmpdir)
print "finished in", time.time() - start_time, "seconds"
logging.info("Time taken for " + fname + ": " +
str(time.time() - start_time) + " seconds")

View File

@ -0,0 +1,7 @@
from .pdf import Pdf
from .lattice import Lattice
from .stream import Stream
__version__ = '0.1'
__all__ = ['Pdf', 'Lattice', 'Stream']

View File

@ -37,8 +37,13 @@ class Cell:
spanning_v : bool
"""
def __init__(self, x1, y1, x2, y2):
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
self.lb = (x1, y1)
self.lt = (x1, y2)
self.rb = (x2, y1)
@ -53,7 +58,7 @@ class Cell:
self.spanning_v = False
def add_text(self, text):
"""Add text to cell object.
"""Adds text to cell object.
Parameters
----------
@ -62,8 +67,8 @@ class Cell:
self.text = ''.join([self.text, text])
def get_text(self):
"""Get text from cell object.
"""Returns text from cell object.
Returns
-------
text : string
@ -71,7 +76,7 @@ class Cell:
return self.text
def get_bounded_edges(self):
"""Get number of edges by which a cell is bounded.
"""Returns number of edges by which a cell is bounded.
Returns
-------

354
camelot/lattice.py 100644
View File

@ -0,0 +1,354 @@
import os
import cv2
import numpy as np
from .table import Table
from .utils import (transform, elements_bbox, detect_vertical, merge_close_values,
get_row_index, get_column_index, reduce_index, outline,
fill_spanning, remove_empty, encode_list)
__all__ = ['Lattice']
def _morph_transform(imagename, scale=15, invert=False):
"""Morphological Transformation
Applies a series of morphological operations on the image
to find table contours and line segments.
http://answers.opencv.org/question/63847/how-to-extract-tables-from-an-image/
Empirical result for adaptiveThreshold's blockSize=5 and C=-0.2
taken from http://pequan.lip6.fr/~bereziat/pima/2012/seuillage/sezgin04.pdf
Parameters
----------
imagename : Path to image.
scale : int
Scaling factor. Large scaling factor leads to smaller lines
being detected. (optional, default: 15)
invert : bool
Invert pdf image to make sure that lines are in foreground.
(optional, default: False)
Returns
-------
img : ndarray
tables : dict
Dictionary with table bounding box as key and list of
joints found in the table as value.
v_segments : list
List of vertical line segments found in the image.
h_segments : list
List of horizontal line segments found in the image.
"""
img = cv2.imread(imagename)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
if invert:
threshold = cv2.adaptiveThreshold(
gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,
15, -0.2)
else:
threshold = cv2.adaptiveThreshold(
np.invert(gray), 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY,
15, -0.2)
vertical = threshold
horizontal = threshold
verticalsize = vertical.shape[0] / scale
horizontalsize = horizontal.shape[1] / scale
ver = cv2.getStructuringElement(cv2.MORPH_RECT, (1, verticalsize))
hor = cv2.getStructuringElement(cv2.MORPH_RECT, (horizontalsize, 1))
vertical = cv2.erode(vertical, ver, (-1, -1))
vertical = cv2.dilate(vertical, ver, (-1, -1))
horizontal = cv2.erode(horizontal, hor, (-1, -1))
horizontal = cv2.dilate(horizontal, hor, (-1, -1))
mask = vertical + horizontal
joints = np.bitwise_and(vertical, horizontal)
__, contours, __ = cv2.findContours(
mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours = sorted(contours, key=cv2.contourArea, reverse=True)[:10]
tables = {}
for c in contours:
c_poly = cv2.approxPolyDP(c, 3, True)
x, y, w, h = cv2.boundingRect(c_poly)
roi = joints[y : y + h, x : x + w]
__, jc, __ = cv2.findContours(
roi, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)
if len(jc) <= 4: # remove contours with less than <=4 joints
continue
joint_coords = []
for j in jc:
jx, jy, jw, jh = cv2.boundingRect(j)
c1, c2 = x + (2 * jx + jw) / 2, y + (2 * jy + jh) / 2
joint_coords.append((c1, c2))
tables[(x, y + h, x + w, y)] = joint_coords
v_segments, h_segments = [], []
_, vcontours, _ = cv2.findContours(
vertical, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for vc in vcontours:
x, y, w, h = cv2.boundingRect(vc)
x1, x2 = x, x + w
y1, y2 = y, y + h
v_segments.append(((x1 + x2) / 2, y2, (x1 + x2) / 2, y1))
_, hcontours, _ = cv2.findContours(
horizontal, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for hc in hcontours:
x, y, w, h = cv2.boundingRect(hc)
x1, x2 = x, x + w
y1, y2 = y, y + h
h_segments.append((x1, (y1 + y2) / 2, x2, (y1 + y2) / 2))
return img, tables, v_segments, h_segments
class Lattice:
"""Lattice algorithm
Makes use of pdf geometry by processing its image, to make a table
and fills text objects in table cells.
Parameters
----------
pdfobject : camelot.pdf.Pdf
fill : None, 'h', 'v', 'hv'
Fill data in horizontal and/or vertical spanning
cells. (optional)
scale : int
Scaling factor. Large scaling factor leads to smaller lines
being detected. (optional, default: 15)
jtol : int
Tolerance to account for when comparing joint and line
coordinates. (optional, default: 2)
mtol : int
Tolerance to account for when merging lines which are
very close. (optional, default: 2)
invert : bool
Invert pdf image to make sure that lines are in foreground.
(optional, default: False)
debug : 'contour', 'line', 'joint', 'table'
Debug by visualizing pdf geometry.
Attributes
----------
tables : dict
Dictionary with page number as key and list of tables on that
page as value.
"""
def __init__(self, pdfobject, fill=None, scale=15, jtol=2, mtol=2,
invert=False, debug=None):
self.pdfobject = pdfobject
self.fill = fill
self.scale = scale
self.jtol = jtol
self.mtol = mtol
self.invert = invert
self.debug = debug
self.tables = {}
if self.debug is not None:
self.debug_images = {}
self.debug_segments = {}
self.debug_tables = {}
def get_tables(self):
"""Returns all tables found in given pdf.
Returns
-------
tables : dict
Dictionary with page number as key and list of tables on that
page as value.
"""
self.pdfobject.split()
self.pdfobject.convert()
for page in self.pdfobject.extract():
p, text, __, width, height = page
pkey = 'pg-{0}'.format(p)
imagename = os.path.join(
self.pdfobject.temp, '{}.png'.format(pkey))
pdf_x = width
pdf_y = height
img, table_bbox, v_segments, h_segments = _morph_transform(
imagename, scale=self.scale, invert=self.invert)
img_x = img.shape[1]
img_y = img.shape[0]
scaling_factor_x = pdf_x / float(img_x)
scaling_factor_y = pdf_y / float(img_y)
if self.debug is not None:
self.debug_images[pkey] = (img, table_bbox)
factors = (scaling_factor_x, scaling_factor_y, img_y)
table_bbox, v_segments, h_segments = transform(table_bbox, v_segments,
h_segments, factors)
if self.debug is not None:
self.debug_segments[pkey] = (v_segments, h_segments)
if self.debug is not None:
debug_page_tables = []
page_tables = []
# sort tables based on y-coord
for k in sorted(table_bbox.keys(), key=lambda x: x[1], reverse=True):
# select edges which lie within table_bbox
text_bbox, v_s, h_s = elements_bbox(k, text, v_segments,
h_segments)
rotated = detect_vertical(text_bbox)
cols, rows = zip(*table_bbox[k])
cols, rows = list(cols), list(rows)
cols.extend([k[0], k[2]])
rows.extend([k[1], k[3]])
# sort horizontal and vertical segments
cols = merge_close_values(sorted(cols), mtol=self.mtol)
rows = merge_close_values(
sorted(rows, reverse=True), mtol=self.mtol)
# make grid using x and y coord of shortlisted rows and cols
cols = [(cols[i], cols[i + 1])
for i in range(0, len(cols) - 1)]
rows = [(rows[i], rows[i + 1])
for i in range(0, len(rows) - 1)]
table = Table(cols, rows)
# set table edges to True using ver+hor lines
table = table.set_edges(v_s, h_s, jtol=self.jtol)
# set spanning cells to True
table = table.set_spanning()
# set table border edges to True
table = outline(table)
if self.debug is not None:
debug_page_tables.append(table)
# fill text after sorting it
if rotated == '':
text_bbox.sort(key=lambda x: (-x.y0, x.x0))
elif rotated == 'left':
text_bbox.sort(key=lambda x: (x.x0, x.y0))
elif rotated == 'right':
text_bbox.sort(key=lambda x: (-x.x0, -x.y0))
for t in text_bbox:
r_idx = get_row_index(t, rows)
c_idx = get_column_index(t, cols)
if None in [r_idx, c_idx]:
# couldn't assign LTChar to any cell
pass
else:
r_idx, c_idx = reduce_index(
table, rotated, r_idx, c_idx)
table.cells[r_idx][c_idx].add_text(
t.get_text().strip('\n'))
if self.fill is not None:
table = fill_spanning(table, fill=self.fill)
ar = table.get_list()
if rotated == 'left':
ar = zip(*ar[::-1])
elif rotated == 'right':
ar = zip(*ar[::1])
ar.reverse()
ar = remove_empty(ar)
ar = [list(o) for o in ar]
page_tables.append(encode_list(ar))
print pkey # verbose
self.tables[pkey] = page_tables
if self.debug is not None:
self.debug_tables[pkey] = debug_page_tables
if self.pdfobject.clean:
self.pdfobject.remove_tempdir()
if self.debug is not None:
return None
return self.tables
def plot_geometry(self, geometry):
"""Plots various pdf geometries that are detected so user can choose
tweak scale, jtol, mtol parameters.
"""
import matplotlib.pyplot as plt
if geometry == 'contour':
for pkey in self.debug_images.keys():
img, table_bbox = self.debug_images[pkey]
for t in table_bbox.keys():
cv2.rectangle(img, (t[0], t[1]),
(t[2], t[3]), (255, 0, 0), 3)
plt.imshow(img)
plt.axis('off')
plt.show()
elif geometry == 'joint':
x_coord = []
y_coord = []
for pkey in self.debug_images.keys():
img, table_bbox = self.debug_images[pkey]
for k in table_bbox.keys():
for coord in table_bbox[k]:
x_coord.append(coord[0])
y_coord.append(coord[1])
max_x, max_y = max(x_coord), max(y_coord)
plt.plot(x_coord, y_coord, 'ro')
plt.axis([0, max_x + 100, max_y + 100, 0])
plt.imshow(img)
plt.axis('off')
plt.show()
elif geometry == 'line':
for pkey in self.debug_segments.keys():
v_s, h_s = self.debug_segments[pkey]
for v in v_s:
plt.plot([v[0], v[2]], [v[1], v[3]])
for h in h_s:
plt.plot([h[0], h[2]], [h[1], h[3]])
plt.axis('off')
plt.show()
elif geometry == 'table':
for pkey in self.debug_tables.keys():
for table in self.debug_tables[pkey]:
for i in range(len(table.cells)):
for j in range(len(table.cells[i])):
if table.cells[i][j].left:
plt.plot([table.cells[i][j].lb[0],
table.cells[i][j].lt[0]],
[table.cells[i][j].lb[1],
table.cells[i][j].lt[1]])
if table.cells[i][j].right:
plt.plot([table.cells[i][j].rb[0],
table.cells[i][j].rt[0]],
[table.cells[i][j].rb[1],
table.cells[i][j].rt[1]])
if table.cells[i][j].top:
plt.plot([table.cells[i][j].lt[0],
table.cells[i][j].rt[0]],
[table.cells[i][j].lt[1],
table.cells[i][j].rt[1]])
if table.cells[i][j].bottom:
plt.plot([table.cells[i][j].lb[0],
table.cells[i][j].rb[0]],
[table.cells[i][j].lb[1],
table.cells[i][j].rb[1]])
plt.axis('off')
plt.show()

178
camelot/pdf.py 100644
View File

@ -0,0 +1,178 @@
import os
import shutil
import tempfile
from PyPDF2 import PdfFileReader, PdfFileWriter
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTChar, LTTextLineHorizontal
from wand.image import Image
__all__ = ['Pdf']
def _parse_page_numbers(pagenos):
"""Converts list of page ranges to a list of page numbers.
Parameters
----------
pagenos : list
List of dicts containing page ranges.
Returns
-------
page_numbers : list
List of page numbers.
"""
page_numbers = []
for p in pagenos:
page_numbers.extend(range(p['start'], p['end'] + 1))
page_numbers = sorted(set(page_numbers))
return page_numbers
def _extract_text_objects(layout, LTObject, t=None):
"""Recursively parses pdf layout to get a list of
text objects.
Parameters
----------
layout : object
Layout object.
LTObject : object
Text object, either LTChar or LTTextLineHorizontal.
t : list
Returns
-------
t : list
List of text objects.
"""
if t is None:
t = []
try:
for obj in layout._objs:
if isinstance(obj, LTObject):
t.append(obj)
else:
t += _extract_text_objects(obj, LTObject)
except AttributeError:
pass
return t
class Pdf:
"""Handles all pdf operations which include:
1. Split pdf into single page pdfs using given page numbers
2. Convert single page pdfs into images
3. Extract text from single page pdfs
Parameters
----------
pdfname : string
Path to pdf.
pagenos : list
List of dicts which specify pdf page ranges.
char_margin : float
Chars closer than char_margin are grouped together to form a
word. (optional, default: 2.0)
line_margin : float
Lines closer than line_margin are grouped together to form a
textbox. (optional, default: 0.5)
word_margin : float
Insert blank spaces between chars if distance between words
is greater than word_margin. (optional, default: 0.1)
Attributes
----------
temp : string
Path to temporary directory.
lattice_objects : dict
List of text objects.
stream_objects : dict
List of text objects.
width : dict
List of dicts with width of each pdf page.
height : dict
List of dicts with height of each pdf page.
"""
def __init__(self, pdfname, pagenos=[{'start': 1, 'end': 1}],
char_margin=2.0, line_margin=0.5, word_margin=0.1,
clean=False):
self.pdfname = pdfname
self.pagenos = _parse_page_numbers(pagenos)
self.char_margin = char_margin
self.line_margin = line_margin
self.word_margin = word_margin
self.clean = clean
self.temp = tempfile.mkdtemp()
def split(self):
"""Splits pdf into single page pdfs.
"""
infile = PdfFileReader(open(self.pdfname, 'rb'), strict=False)
for p in self.pagenos:
page = infile.getPage(p - 1)
outfile = PdfFileWriter()
outfile.addPage(page)
with open(os.path.join(self.temp, 'pg-{0}.pdf'.format(p)), 'wb') as f:
outfile.write(f)
def extract(self):
"""Extracts text objects, width, height from a pdf.
"""
for p in self.pagenos:
pkey = 'pg-{0}'.format(p)
pname = os.path.join(self.temp, '{}.pdf'.format(pkey))
with open(pname, 'r') as f:
parser = PDFParser(f)
document = PDFDocument(parser)
if not document.is_extractable:
raise PDFTextExtractionNotAllowed
laparams = LAParams(char_margin=self.char_margin,
line_margin=self.line_margin,
word_margin=self.word_margin)
rsrcmgr = PDFResourceManager()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in PDFPage.create_pages(document):
interpreter.process_page(page)
layout = device.get_result()
lattice_objects = _extract_text_objects(layout, LTChar)
stream_objects = _extract_text_objects(
layout, LTTextLineHorizontal)
width = layout.bbox[2]
height = layout.bbox[3]
yield p, lattice_objects, stream_objects, width, height
def convert(self):
"""Converts single page pdfs to images.
"""
for p in self.pagenos:
pdfname = os.path.join(self.temp, 'pg-{0}.pdf'.format(p))
imagename = os.path.join(self.temp, 'pg-{0}.png'.format(p))
with Image(filename=pdfname, depth=8, resolution=300) as png:
png.save(filename=imagename)
def remove_tempdir(self):
shutil.rmtree(self.temp)

210
camelot/stream.py 100644
View File

@ -0,0 +1,210 @@
import os
import numpy as np
from .utils import get_column_index, encode_list
__all__ = ['Stream']
def _group_rows(text, ytol=2):
"""Groups text objects into rows using ytol.
Parameters
----------
text : list
List of text objects.
ytol : int
Tolerance to account for when grouping rows
together. (default: 2, optional)
Returns
-------
rows : list
List of grouped text rows.
"""
row_y = 0
rows = []
temp = []
for t in text:
# is checking for upright necessary?
# if t.get_text().strip() and all([obj.upright for obj in t._objs if
# type(obj) is LTChar]):
if t.get_text().strip():
if not np.isclose(row_y, t.y0, atol=ytol):
row_y = t.y0
rows.append(temp)
temp = []
temp.append(t)
return rows
def _merge_columns(l):
"""Merges overlapping columns and returns list with updated
columns boundaries.
Parameters
----------
l : list
List of column x-coordinates.
Returns
-------
merged : list
List of merged column x-coordinates.
"""
merged = []
for higher in l:
if not merged:
merged.append(higher)
else:
lower = merged[-1]
if higher[0] <= lower[1]:
upper_bound = max(lower[1], higher[1])
lower_bound = min(lower[0], higher[0])
merged[-1] = (lower_bound, upper_bound)
else:
merged.append(higher)
return merged
class Stream:
"""Stream algorithm
Groups text objects into rows and guesses number of columns
using mode of the number of text objects in each row.
The number of columns can be passed explicitly or specified by a
list of column x-coordinates.
Parameters
----------
pdfobject : camelot.pdf.Pdf
ncolumns : int
Number of columns. (optional, default: 0)
columns : string
Comma-separated list of column x-coordinates.
(optional, default: None)
ytol : int
Tolerance to account for when grouping rows
together. (optional, default: 2)
debug : bool
Debug by visualizing textboxes. (optional, default: False)
Attributes
----------
tables : dict
Dictionary with page number as key and list of tables on that
page as value.
"""
def __init__(self, pdfobject, ncolumns=0, columns=None, ytol=2,
debug=False):
self.pdfobject = pdfobject
self.ncolumns = ncolumns
self.columns = columns
self.ytol = ytol
self.debug = debug
self.tables = {}
if self.debug:
self.debug_text = {}
def get_tables(self):
"""Returns all tables found in given pdf.
Returns
-------
tables : dict
Dictionary with page number as key and list of tables on that
page as value.
"""
self.pdfobject.split()
for page in self.pdfobject.extract():
p, __, text, __, __ = page
pkey = 'pg-{0}'.format(p)
text.sort(key=lambda x: (-x.y0, x.x0))
if self.debug:
self.debug_text[pkey] = text
rows = _group_rows(text, ytol=self.ytol)
elements = [len(r) for r in rows]
# a table can't have just 1 column, can it?
elements = filter(lambda x: x != 1, elements)
guess = False
if self.columns:
cols = self.columns.split(',')
cols = [(float(cols[i]), float(cols[i + 1]))
for i in range(0, len(cols) - 1)]
else:
guess = True
ncols = self.ncolumns if self.ncolumns else max(
set(elements), key=elements.count)
if ncols == 0:
# no tables detected
continue
cols = [(t.x0, t.x1)
for r in rows for t in r if len(r) == ncols]
cols = _merge_columns(sorted(cols))
cols = [(c[0] + c[1]) / 2.0 for c in cols]
ar = [['' for c in cols] for r in rows]
for r_idx, r in enumerate(rows):
for t in r:
if guess:
cog = (t.x0 + t.x1) / 2.0
diff = [abs(cog - c) for c in cols]
c_idx = diff.index(min(diff))
else:
c_idx = get_column_index(t, cols)
if None in [r_idx, c_idx]: # couldn't assign LTTextLH to any cell
continue
if ar[r_idx][c_idx]:
ar[r_idx][c_idx] = ' '.join(
[ar[r_idx][c_idx], t.get_text().strip()])
else:
ar[r_idx][c_idx] = t.get_text().strip()
print pkey # verbose
self.tables[pkey] = [encode_list(ar)]
if self.pdfobject.clean:
self.pdfobject.remove_tempdir()
if self.debug:
return None
return self.tables
def plot_text(self):
"""Plots all text objects so user can choose number of columns
or columns x-coordinates using the matplotlib interface.
"""
import matplotlib.pyplot as plt
import matplotlib.patches as patches
for pkey in sorted(self.debug_text.keys()):
fig = plt.figure()
ax = fig.add_subplot(111, aspect='equal')
xs, ys = [], []
for t in self.debug_text[pkey]:
xs.extend([t.x0, t.x1])
ys.extend([t.y0, t.y1])
ax.add_patch(
patches.Rectangle(
(t.x0, t.y0),
t.x1 - t.x0,
t.y1 - t.y0
)
)
ax.set_xlim(min(xs) - 10, max(xs) + 10)
ax.set_ylim(min(ys) - 10, max(ys) + 10)
plt.axis('off')
plt.show()

View File

@ -1,14 +1,14 @@
import numpy as np
from cell import Cell
from .cell import Cell
class Table:
"""Table
Parameters
----------
columns : list
cols : list
List of column x-coordinates.
rows : list
@ -18,22 +18,17 @@ class Table:
----------
cells : list
2-D list of cell objects.
columns : list
List of column x-coordinates.
rows : list
List of row y-coordinates.
"""
def __init__(self, columns, rows):
self.cells = [[Cell(c[0], r[1], c[1], r[0])
for c in columns] for r in rows]
self.columns = columns
def __init__(self, cols, rows):
self.cols = cols
self.rows = rows
self.cells = [[Cell(c[0], r[1], c[1], r[0])
for c in cols] for r in rows]
def set_edges(self, vertical, horizontal, jtol=2):
"""Set cell edges to True if corresponding line segments
"""Sets cell edges to True if corresponding line segments
are detected in the pdf image.
Parameters
@ -47,16 +42,11 @@ class Table:
jtol : int, default: 2, optional
Tolerance to account for when comparing joint and line
coordinates.
Returns
-------
self : object
Returns self.
"""
for v in vertical:
# find closest x coord
# iterate over y coords and find closest points
i = [i for i, t in enumerate(self.columns)
i = [i for i, t in enumerate(self.cols)
if np.isclose(v[0], t[0], atol=jtol)]
j = [j for j, t in enumerate(self.rows)
if np.isclose(v[3], t[0], atol=jtol)]
@ -78,7 +68,7 @@ class Table:
self.cells[J][I].left = True
J += 1
elif i == []: # only right edge
I = len(self.columns) - 1
I = len(self.cols) - 1
if k:
K = k[0]
while J < K:
@ -109,9 +99,9 @@ class Table:
# iterate over x coords and find closest points
i = [i for i, t in enumerate(self.rows)
if np.isclose(h[1], t[0], atol=jtol)]
j = [j for j, t in enumerate(self.columns)
j = [j for j, t in enumerate(self.cols)
if np.isclose(h[0], t[0], atol=jtol)]
k = [k for k, t in enumerate(self.columns)
k = [k for k, t in enumerate(self.cols)
if np.isclose(h[2], t[0], atol=jtol)]
if not j:
continue
@ -124,7 +114,7 @@ class Table:
self.cells[I][J].top = True
J += 1
else:
K = len(self.columns)
K = len(self.cols)
while J < K:
self.cells[I][J].top = True
J += 1
@ -136,7 +126,7 @@ class Table:
self.cells[I][J].bottom = True
J += 1
else:
K = len(self.columns)
K = len(self.cols)
while J < K:
self.cells[I][J].bottom = True
J += 1
@ -149,7 +139,7 @@ class Table:
self.cells[I - 1][J].bottom = True
J += 1
else:
K = len(self.columns)
K = len(self.cols)
while J < K:
self.cells[I][J].top = True
self.cells[I - 1][J].bottom = True
@ -158,13 +148,8 @@ class Table:
return self
def set_spanning(self):
"""Set spanning values of a cell to True if it isn't
"""Sets spanning values of a cell to True if it isn't
bounded by four edges.
Returns
-------
self : object
Returns self.
"""
for i in range(len(self.cells)):
for j in range(len(self.cells[i])):
@ -175,7 +160,7 @@ class Table:
elif bound == 3:
if not self.cells[i][j].left:
if (self.cells[i][j].right and
self.cells[i][j].top and
self.cells[i][j].top and
self.cells[i][j].bottom):
self.cells[i][j].spanning_h = True
@ -209,3 +194,16 @@ class Table:
self.cells[i][j].spanning_h = True
return self
def get_list(self):
"""Returns text from all cells as list of lists.
Returns
-------
ar : list
"""
ar = []
for i in range(len(self.cells)):
ar.append([self.cells[i][j].get_text().strip()
for j in range(len(self.cells[i]))])
return ar

View File

@ -2,7 +2,7 @@ import numpy as np
def translate(x1, x2):
"""Translate coordinate x2 by x1.
"""Translates x2 by x1.
Parameters
----------
@ -19,7 +19,7 @@ def translate(x1, x2):
def scale(x, s):
"""Scale coordinate x by scaling factor s.
"""Scales x by scaling factor s.
Parameters
----------
@ -36,7 +36,7 @@ def scale(x, s):
def rotate(x1, y1, x2, y2, angle):
"""Rotate point x2, y2 about point x1, y1 by angle.
"""Rotates point x2, y2 about point x1, y1 by angle.
Parameters
----------
@ -68,15 +68,126 @@ def rotate(x1, y1, x2, y2, angle):
return xnew, ynew
def transform(tables, v_segments, h_segments, factors):
"""Translates and scales OpenCV coordinates to PDFMiner coordinate
space.
Parameters
----------
tables : dict
v_segments : list
h_segments : list
factors : tuple
Returns
-------
tables_new : dict
v_segments_new : dict
h_segments_new : dict
"""
scaling_factor_x, scaling_factor_y, img_y = factors
tables_new = {}
for k in tables.keys():
x1, y1, x2, y2 = k
x1 = scale(x1, scaling_factor_x)
y1 = scale(abs(translate(-img_y, y1)), scaling_factor_y)
x2 = scale(x2, scaling_factor_x)
y2 = scale(abs(translate(-img_y, y2)), scaling_factor_y)
j_x, j_y = zip(*tables[k])
j_x = [scale(j, scaling_factor_x) for j in j_x]
j_y = [scale(abs(translate(-img_y, j)), scaling_factor_y) for j in j_y]
joints = zip(j_x, j_y)
tables_new[(x1, y1, x2, y2)] = joints
v_segments_new = []
for v in v_segments:
x1, x2 = scale(v[0], scaling_factor_x), scale(v[2], scaling_factor_x)
y1, y2 = scale(abs(translate(-img_y, v[1])), scaling_factor_y), scale(
abs(translate(-img_y, v[3])), scaling_factor_y)
v_segments_new.append((x1, y1, x2, y2))
h_segments_new = []
for h in h_segments:
x1, x2 = scale(h[0], scaling_factor_x), scale(h[2], scaling_factor_x)
y1, y2 = scale(abs(translate(-img_y, h[1])), scaling_factor_y), scale(
abs(translate(-img_y, h[3])), scaling_factor_y)
h_segments_new.append((x1, y1, x2, y2))
return tables_new, v_segments_new, h_segments_new
def detect_vertical(text):
"""Detects if text in table is vertical or not and returns
its orientation.
Parameters
----------
text : list
Returns
-------
rotated : string
"""
num_v = [t for t in text if (not t.upright) and t.get_text().strip()]
num_h = [t for t in text if t.upright and t.get_text().strip()]
vger = len(num_v) / float(len(num_v) + len(num_h))
rotated = ''
if vger > 0.8:
clockwise = sum(t.matrix[1] < 0 and t.matrix[2] > 0 for t in text)
anticlockwise = sum(t.matrix[1] > 0 and t.matrix[2] < 0 for t in text)
rotated = 'left' if clockwise < anticlockwise else 'right'
return rotated
def elements_bbox(bbox, text, v_segments, h_segments):
"""Returns all text objects and line segments present inside a
table's bounding box.
Parameters
----------
bbox : tuple
text : list
v_segments : list
h_segments : list
Returns
-------
text_bbox : list
v_s : list
h_s : list
"""
lb = (bbox[0], bbox[1])
rt = (bbox[2], bbox[3])
text_bbox = [t for t in text if lb[0] - 2 <= (t.x0 + t.x1) / 2.0
<= rt[0] + 2 and lb[1] - 2 <= (t.y0 + t.y1) / 2.0
<= rt[1] + 2]
v_s = [v for v in v_segments if v[1] > lb[1] - 2 and
v[3] < rt[1] + 2 and lb[0] - 2 <= v[0] <= rt[0] + 2]
h_s = [h for h in h_segments if h[0] > lb[0] - 2 and
h[2] < rt[0] + 2 and lb[1] - 2 <= h[1] <= rt[1] + 2]
return text_bbox, v_s, h_s
def remove_close_values(ar, mtol=2):
"""Remove values which are within a tolerance of mtol of another value
"""Removes values which are within a tolerance of mtol of another value
present in list.
Parameters
----------
ar : list
mtol : int, default: 2, optional
mtol : int
(optional, default: 2)
Returns
-------
@ -96,14 +207,15 @@ def remove_close_values(ar, mtol=2):
def merge_close_values(ar, mtol=2):
"""Merge values which are within a tolerance of mtol by calculating
"""Merges values which are within a tolerance of mtol by calculating
a moving mean.
Parameters
----------
ar : list
mtol : int, default: 2, optional
mtol : int
(optional, default: 2)
Returns
-------
@ -123,8 +235,8 @@ def merge_close_values(ar, mtol=2):
return ret
def get_row_idx(t, rows):
"""Get index of the row in which the given object falls by
def get_row_index(t, rows):
"""Gets index of the row in which the given object falls by
comparing their co-ordinates.
Parameters
@ -142,8 +254,8 @@ def get_row_idx(t, rows):
return r
def get_column_idx(t, columns):
"""Get index of the column in which the given object falls by
def get_column_index(t, columns):
"""Gets index of the column in which the given object falls by
comparing their co-ordinates.
Parameters
@ -162,8 +274,8 @@ def get_column_idx(t, columns):
def reduce_index(t, rotated, r_idx, c_idx):
"""Shift a text object if it lies within a spanning cell taking
in account table rotation.
"""Reduces index of a text object if it lies within a spanning
cell taking in account table rotation.
Parameters
----------
@ -206,7 +318,7 @@ def reduce_index(t, rotated, r_idx, c_idx):
def outline(t):
"""Light up table boundary.
"""Sets table border edges to True.
Parameters
----------
@ -225,32 +337,33 @@ def outline(t):
return t
def fill(t, f=None):
"""Fill spanning cells.
def fill_spanning(t, fill=None):
"""Fills spanning cells.
Parameters
----------
t : object
f : string, default: None, optional
f : string
(optional, default: None)
Returns
-------
t : object
"""
if f == "h":
if fill == "h":
for i in range(len(t.cells)):
for j in range(len(t.cells[i])):
if t.cells[i][j].get_text().strip() == '':
if t.cells[i][j].spanning_h:
t.cells[i][j].add_text(t.cells[i][j - 1].get_text())
elif f == "v":
elif fill == "v":
for i in range(len(t.cells)):
for j in range(len(t.cells[i])):
if t.cells[i][j].get_text().strip() == '':
if t.cells[i][j].spanning_v:
t.cells[i][j].add_text(t.cells[i - 1][j].get_text())
elif f == "hv":
elif fill == "hv":
for i in range(len(t.cells)):
for j in range(len(t.cells[i])):
if t.cells[i][j].get_text().strip() == '':
@ -262,7 +375,7 @@ def fill(t, f=None):
def remove_empty(d):
"""Remove empty rows and columns.
"""Removes empty rows and columns from list of lists.
Parameters
----------
@ -279,3 +392,8 @@ def remove_empty(d):
d = [list(row) for row in d if any(row)]
d = zip(*d)
return d
def encode_list(ar):
ar = [[r.encode('utf-8') for r in row] for row in ar]
return ar

225
docs/Makefile 100644
View File

@ -0,0 +1,225 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = _build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " applehelp to make an Apple Help Book"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " epub3 to make an epub3"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"
@echo " dummy to check syntax errors of document sources"
.PHONY: clean
clean:
rm -rf $(BUILDDIR)/*
.PHONY: html
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
.PHONY: dirhtml
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
.PHONY: singlehtml
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
.PHONY: pickle
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
.PHONY: json
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
.PHONY: htmlhelp
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
.PHONY: qthelp
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/camelot.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/camelot.qhc"
.PHONY: applehelp
applehelp:
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
@echo
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
@echo "N.B. You won't be able to view it unless you put it in" \
"~/Library/Documentation/Help or install it in your application" \
"bundle."
.PHONY: devhelp
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/camelot"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/camelot"
@echo "# devhelp"
.PHONY: epub
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
.PHONY: epub3
epub3:
$(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3
@echo
@echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3."
.PHONY: latex
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
.PHONY: latexpdf
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
.PHONY: latexpdfja
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
.PHONY: text
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
.PHONY: man
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
.PHONY: texinfo
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
.PHONY: info
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
.PHONY: gettext
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
.PHONY: changes
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
.PHONY: linkcheck
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
.PHONY: doctest
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
.PHONY: coverage
coverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
@echo "Testing of coverage in the sources finished, look at the " \
"results in $(BUILDDIR)/coverage/python.txt."
.PHONY: xml
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
.PHONY: pseudoxml
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
.PHONY: dummy
dummy:
$(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy
@echo
@echo "Build finished. Dummy builder generates no files."

352
docs/conf.py 100644
View File

@ -0,0 +1,352 @@
# -*- coding: utf-8 -*-
#
# camelot documentation build configuration file, created by
# sphinx-quickstart on Tue Jul 19 13:44:18 2016.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
import sys
sys.path.insert(0, os.path.abspath('..'))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.napoleon',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.todo',
'sphinx.ext.coverage',
'sphinx.ext.viewcode',
'sphinx.ext.githubpages',
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'
# The encoding of source files.
#
# source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'camelot'
copyright = u'2016, SocialCops'
author = u'Vinayak Mehta'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
import camelot
# The short X.Y version.
version = camelot.__version__
# The full version, including alpha/beta/rc tags.
release = camelot.__version__
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#
# today = ''
#
# Else, today_fmt is used as the format for a strftime call.
#
# today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
# The reST default role (used for this markup: `text`) to use for all
# documents.
#
# default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#
# add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#
# add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#
# show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
# modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
# keep_warnings = False
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = True
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'alabaster'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
# html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
# html_theme_path = []
# The name for this set of Sphinx documents.
# "<project> v<release> documentation" by default.
#
# html_title = u'camelot v0.1'
# A shorter title for the navigation bar. Default is the same as html_title.
#
# html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#
# html_logo = None
# The name of an image file (relative to this directory) to use as a favicon of
# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#
# html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#
# html_extra_path = []
# If not None, a 'Last updated on:' timestamp is inserted at every page
# bottom, using the given strftime format.
# The empty string is equivalent to '%b %d, %Y'.
#
# html_last_updated_fmt = None
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#
# html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#
# html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#
# html_additional_pages = {}
# If false, no module index is generated.
#
# html_domain_indices = True
# If false, no index is generated.
#
# html_use_index = True
# If true, the index is split into individual pages for each letter.
#
# html_split_index = False
# If true, links to the reST sources are added to the pages.
#
# html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#
# html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#
# html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#
# html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
# html_file_suffix = None
# Language to be used for generating the HTML full-text search index.
# Sphinx supports the following languages:
# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh'
#
# html_search_language = 'en'
# A dictionary with options for the search language support, empty by default.
# 'ja' uses this config value.
# 'zh' user can custom change `jieba` dictionary path.
#
# html_search_options = {'type': 'default'}
# The name of a javascript file (relative to the configuration directory) that
# implements a search results scorer. If empty, the default will be used.
#
# html_search_scorer = 'scorer.js'
# Output file base name for HTML help builder.
htmlhelp_basename = 'camelotdoc'
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'camelot.tex', u'camelot Documentation',
u'Vinayak Mehta', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#
# latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#
# latex_use_parts = False
# If true, show page references after internal links.
#
# latex_show_pagerefs = False
# If true, show URL addresses after external links.
#
# latex_show_urls = False
# Documents to append as an appendix to all manuals.
#
# latex_appendices = []
# It false, will not define \strong, \code, itleref, \crossref ... but only
# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added
# packages.
#
# latex_keep_old_macro_names = True
# If false, no module index is generated.
#
# latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'camelot', u'camelot Documentation',
[author], 1)
]
# If true, show URL addresses after external links.
#
# man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'camelot', u'camelot Documentation',
author, 'camelot', 'One line description of project.',
'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
#
# texinfo_appendices = []
# If false, no module index is generated.
#
# texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#
# texinfo_show_urls = 'footnote'
# If true, do not generate a @detailmenu in the "Top" node's menu.
#
# texinfo_no_detailmenu = False
# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {'https://docs.python.org/2': None}

22
docs/index.rst 100644
View File

@ -0,0 +1,22 @@
.. camelot documentation master file, created by
sphinx-quickstart on Tue Jul 19 13:44:18 2016.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
camelot: Parse tables from PDFs!
================================
Contents:
.. toctree::
:maxdepth: 2
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

281
docs/make.bat 100644
View File

@ -0,0 +1,281 @@
@ECHO OFF
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set BUILDDIR=_build
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
set I18NSPHINXOPTS=%SPHINXOPTS% .
if NOT "%PAPER%" == "" (
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
)
if "%1" == "" goto help
if "%1" == "help" (
:help
echo.Please use `make ^<target^>` where ^<target^> is one of
echo. html to make standalone HTML files
echo. dirhtml to make HTML files named index.html in directories
echo. singlehtml to make a single large HTML file
echo. pickle to make pickle files
echo. json to make JSON files
echo. htmlhelp to make HTML files and a HTML help project
echo. qthelp to make HTML files and a qthelp project
echo. devhelp to make HTML files and a Devhelp project
echo. epub to make an epub
echo. epub3 to make an epub3
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
echo. text to make text files
echo. man to make manual pages
echo. texinfo to make Texinfo files
echo. gettext to make PO message catalogs
echo. changes to make an overview over all changed/added/deprecated items
echo. xml to make Docutils-native XML files
echo. pseudoxml to make pseudoxml-XML files for display purposes
echo. linkcheck to check all external links for integrity
echo. doctest to run all doctests embedded in the documentation if enabled
echo. coverage to run coverage check of the documentation if enabled
echo. dummy to check syntax errors of document sources
goto end
)
if "%1" == "clean" (
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
del /q /s %BUILDDIR%\*
goto end
)
REM Check if sphinx-build is available and fallback to Python version if any
%SPHINXBUILD% 1>NUL 2>NUL
if errorlevel 9009 goto sphinx_python
goto sphinx_ok
:sphinx_python
set SPHINXBUILD=python -m sphinx.__init__
%SPHINXBUILD% 2> nul
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
:sphinx_ok
if "%1" == "html" (
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
goto end
)
if "%1" == "dirhtml" (
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
goto end
)
if "%1" == "singlehtml" (
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
goto end
)
if "%1" == "pickle" (
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the pickle files.
goto end
)
if "%1" == "json" (
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the JSON files.
goto end
)
if "%1" == "htmlhelp" (
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run HTML Help Workshop with the ^
.hhp project file in %BUILDDIR%/htmlhelp.
goto end
)
if "%1" == "qthelp" (
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run "qcollectiongenerator" with the ^
.qhcp project file in %BUILDDIR%/qthelp, like this:
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\camelot.qhcp
echo.To view the help file:
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\camelot.ghc
goto end
)
if "%1" == "devhelp" (
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished.
goto end
)
if "%1" == "epub" (
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The epub file is in %BUILDDIR%/epub.
goto end
)
if "%1" == "epub3" (
%SPHINXBUILD% -b epub3 %ALLSPHINXOPTS% %BUILDDIR%/epub3
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The epub3 file is in %BUILDDIR%/epub3.
goto end
)
if "%1" == "latex" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
if errorlevel 1 exit /b 1
echo.
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdf" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf
cd %~dp0
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdfja" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf-ja
cd %~dp0
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "text" (
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The text files are in %BUILDDIR%/text.
goto end
)
if "%1" == "man" (
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The manual pages are in %BUILDDIR%/man.
goto end
)
if "%1" == "texinfo" (
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
goto end
)
if "%1" == "gettext" (
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
goto end
)
if "%1" == "changes" (
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
if errorlevel 1 exit /b 1
echo.
echo.The overview file is in %BUILDDIR%/changes.
goto end
)
if "%1" == "linkcheck" (
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
if errorlevel 1 exit /b 1
echo.
echo.Link check complete; look for any errors in the above output ^
or in %BUILDDIR%/linkcheck/output.txt.
goto end
)
if "%1" == "doctest" (
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
if errorlevel 1 exit /b 1
echo.
echo.Testing of doctests in the sources finished, look at the ^
results in %BUILDDIR%/doctest/output.txt.
goto end
)
if "%1" == "coverage" (
%SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage
if errorlevel 1 exit /b 1
echo.
echo.Testing of coverage in the sources finished, look at the ^
results in %BUILDDIR%/coverage/python.txt.
goto end
)
if "%1" == "xml" (
%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The XML files are in %BUILDDIR%/xml.
goto end
)
if "%1" == "pseudoxml" (
%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
goto end
)
if "%1" == "dummy" (
%SPHINXBUILD% -b dummy %ALLSPHINXOPTS% %BUILDDIR%/dummy
if errorlevel 1 exit /b 1
echo.
echo.Build finished. Dummy builder generates no files.
goto end
)
:end

View File

@ -1,313 +0,0 @@
import os
import cv2
import glob
import numpy as np
from wand.image import Image
from table import Table
from pdf import get_pdf_info
from utils import (translate, scale, merge_close_values, get_row_idx,
get_column_idx, reduce_index, outline, fill, remove_empty)
def morph_transform(img, s=15, invert=False):
"""Morphological Transformation
Applies a series of morphological operations on the image
to find table contours and line segments.
http://answers.opencv.org/question/63847/how-to-extract-tables-from-an-image/
Empirical result for adaptiveThreshold's blockSize=5 and C=-0.2
taken from http://pequan.lip6.fr/~bereziat/pima/2012/seuillage/sezgin04.pdf
Parameters
----------
img : ndarray
s : int, default: 15, optional
Scaling factor. Large scaling factor leads to smaller lines
being detected.
invert : bool, default: False, optional
Invert pdf image to make sure that lines are in foreground.
Returns
-------
tables : dict
Dictionary with table bounding box as key and list of
joints found in the table as value.
v_segments : list
List of vertical line segments found in the image.
h_segments : list
List of horizontal line segments found in the image.
"""
img_x, img_y = img.shape[1], img.shape[0]
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
if invert:
threshold = cv2.adaptiveThreshold(
gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 15, -0.2)
else:
threshold = cv2.adaptiveThreshold(np.invert(
gray), 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 15, -0.2)
vertical = threshold
horizontal = threshold
scale = s
verticalsize = vertical.shape[0] / scale
horizontalsize = horizontal.shape[1] / scale
ver = cv2.getStructuringElement(cv2.MORPH_RECT, (1, verticalsize))
hor = cv2.getStructuringElement(cv2.MORPH_RECT, (horizontalsize, 1))
vertical = cv2.erode(vertical, ver, (-1, -1))
vertical = cv2.dilate(vertical, ver, (-1, -1))
horizontal = cv2.erode(horizontal, hor, (-1, -1))
horizontal = cv2.dilate(horizontal, hor, (-1, -1))
mask = vertical + horizontal
joints = np.bitwise_and(vertical, horizontal)
__, contours, __ = cv2.findContours(
mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours = sorted(contours, key=cv2.contourArea, reverse=True)[:10]
tables = {}
for c in contours:
c_poly = cv2.approxPolyDP(c, 3, True)
x, y, w, h = cv2.boundingRect(c_poly)
# find number of non-zero values in joints using what boundingRect
# returns
roi = joints[y : y + h, x : x + w]
__, jc, __ = cv2.findContours(
roi, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)
if len(jc) <= 4: # remove contours with less than <=4 joints
continue
joint_coords = []
for j in jc:
jx, jy, jw, jh = cv2.boundingRect(j)
c1, c2 = x + (2 * jx + jw) / 2, y + (2 * jy + jh) / 2
joint_coords.append((c1, c2))
tables[(x, y + h, x + w, y)] = joint_coords
v_segments, h_segments = [], []
_, vcontours, _ = cv2.findContours(
vertical, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for vc in vcontours:
x, y, w, h = cv2.boundingRect(vc)
x1, x2 = x, x + w
y1, y2 = y, y + h
v_segments.append(((x1 + x2) / 2, y2, (x1 + x2) / 2, y1))
_, hcontours, _ = cv2.findContours(
horizontal, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for hc in hcontours:
x, y, w, h = cv2.boundingRect(hc)
x1, x2 = x, x + w
y1, y2 = y, y + h
h_segments.append((x1, (y1 + y2) / 2, x2, (y1 + y2) / 2))
return tables, v_segments, h_segments
def lattice(filepath, f=None, s=15, jtol=2, mtol=2, invert=False, debug=None):
"""Lattice algorithm
Makes table using pdf geometry information returned by
morph_transform and fills data returned by PDFMiner in table cells.
Parameters
----------
filepath : string
f : string, default: None, optional
Fill data in horizontal and/or vertical spanning
cells. ('h', 'v', 'hv')
s : int, default: 15, optional
Scaling factor. Large scaling factor leads to smaller lines
being detected.
jtol : int, default: 2, optional
Tolerance to account for when comparing joint and line
coordinates.
mtol : int, default: 2, optional
Tolerance to account for when merging lines which are
very close.
invert : bool, default: False, optional
Invert pdf image to make sure that lines are in foreground.
debug : string
Debug by visualizing pdf geometry.
('contour', 'line', 'joint', 'table')
Returns
-------
output : dict
Dictionary with table number as key and list of data as value.
"""
if debug:
import matplotlib.pyplot as plt
fileroot, __ = os.path.splitext(filepath)
imagename = fileroot + '.png'
with Image(filename=filepath, depth=8, resolution=300) as png:
png.save(filename=imagename)
img = cv2.imread(imagename)
img_x, img_y = img.shape[1], img.shape[0]
text, pdf_x, pdf_y = get_pdf_info(filepath, method='lattice')
scaling_factor_x = pdf_x / float(img_x)
scaling_factor_y = pdf_y / float(img_y)
tables, v_segments, h_segments = morph_transform(img, s=s, invert=invert)
if debug == "contour":
for t in tables.keys():
cv2.rectangle(img, (t[0], t[1]), (t[2], t[3]), (255, 0, 0), 3)
plt.imshow(img)
plt.show()
return None
if debug == "joint":
x_coord = []
y_coord = []
for k in tables.keys():
for coord in tables[k]:
x_coord.append(coord[0])
y_coord.append(coord[1])
max_x, max_y = max(x_coord), max(y_coord)
plt.plot(x_coord, y_coord, 'ro')
plt.axis([0, max_x + 100, max_y + 100, 0])
plt.imshow(img)
plt.show()
return None
# detect if vertical
num_v = [t for t in text if (not t.upright) and t.get_text().strip()]
num_h = [t for t in text if t.upright and t.get_text().strip()]
vger = len(num_v) / float(len(num_v) + len(num_h))
rotated = ''
if vger > 0.8:
clockwise = sum(t.matrix[1] < 0 and t.matrix[2] > 0 for t in text)
anticlockwise = sum(t.matrix[1] > 0 and t.matrix[2] < 0 for t in text)
rotated = 'left' if clockwise < anticlockwise else 'right'
tables_new = {}
for k in tables.keys():
x1, y1, x2, y2 = k
x1 = scale(x1, scaling_factor_x)
y1 = scale(abs(translate(-img_y, y1)), scaling_factor_y)
x2 = scale(x2, scaling_factor_x)
y2 = scale(abs(translate(-img_y, y2)), scaling_factor_y)
j_x, j_y = zip(*tables[k])
j_x = [scale(j, scaling_factor_x) for j in j_x]
j_y = [scale(abs(translate(-img_y, j)), scaling_factor_y) for j in j_y]
joints = zip(j_x, j_y)
tables_new[(x1, y1, x2, y2)] = joints
v_segments_new = []
for v in v_segments:
x1, x2 = scale(v[0], scaling_factor_x), scale(v[2], scaling_factor_x)
y1, y2 = scale(abs(translate(-img_y, v[1])), scaling_factor_y), scale(
abs(translate(-img_y, v[3])), scaling_factor_y)
v_segments_new.append((x1, y1, x2, y2))
h_segments_new = []
for h in h_segments:
x1, x2 = scale(h[0], scaling_factor_x), scale(h[2], scaling_factor_x)
y1, y2 = scale(abs(translate(-img_y, h[1])), scaling_factor_y), scale(
abs(translate(-img_y, h[3])), scaling_factor_y)
h_segments_new.append((x1, y1, x2, y2))
num_tables = 1
output = {}
# sort tables based on y-coord
for k in sorted(tables_new.keys(), key=lambda x: x[1], reverse=True):
# find rows and columns that lie in table
lb = (k[0], k[1])
rt = (k[2], k[3])
v_s = [v for v in v_segments_new if v[1] > lb[1] - 2 and v[3]
< rt[1] + 2 and lb[0] - 2 <= v[0] <= rt[0] + 2]
h_s = [h for h in h_segments_new if h[0] > lb[0] - 2 and h[2]
< rt[0] + 2 and lb[1] - 2 <= h[1] <= rt[1] + 2]
if debug == "line":
for v in v_s:
plt.plot([v[0], v[2]], [v[1], v[3]])
for h in h_s:
plt.plot([h[0], h[2]], [h[1], h[3]])
columns, rows = zip(*tables_new[k])
columns, rows = list(columns), list(rows)
columns.extend([lb[0], rt[0]])
rows.extend([lb[1], rt[1]])
# sort horizontal and vertical segments
columns = merge_close_values(sorted(columns), mtol=mtol)
rows = merge_close_values(sorted(rows, reverse=True), mtol=mtol)
# make grid using x and y coord of shortlisted rows and columns
columns = [(columns[i], columns[i + 1])
for i in range(0, len(columns) - 1)]
rows = [(rows[i], rows[i + 1]) for i in range(0, len(rows) - 1)]
table = Table(columns, rows)
# light up cell edges
table = table.set_edges(v_s, h_s, jtol=jtol)
# table set span method
table = table.set_spanning()
# light up table border
table = outline(table)
if debug == "table":
for i in range(len(table.cells)):
for j in range(len(table.cells[i])):
if table.cells[i][j].left:
plt.plot([table.cells[i][j].lb[0], table.cells[i][j].lt[0]],
[table.cells[i][j].lb[1], table.cells[i][j].lt[1]])
if table.cells[i][j].right:
plt.plot([table.cells[i][j].rb[0], table.cells[i][j].rt[0]],
[table.cells[i][j].rb[1], table.cells[i][j].rt[1]])
if table.cells[i][j].top:
plt.plot([table.cells[i][j].lt[0], table.cells[i][j].rt[0]],
[table.cells[i][j].lt[1], table.cells[i][j].rt[1]])
if table.cells[i][j].bottom:
plt.plot([table.cells[i][j].lb[0], table.cells[i][j].rb[0]],
[table.cells[i][j].lb[1], table.cells[i][j].rb[1]])
# fill text after sorting it
if not rotated:
text.sort(key=lambda x: (-x.y0, x.x0))
elif rotated == 'left':
text.sort(key=lambda x: (x.x0, x.y0))
elif rotated == 'right':
text.sort(key=lambda x: (-x.x0, -x.y0))
for t in text:
r_idx = get_row_idx(t, rows)
c_idx = get_column_idx(t, columns)
if None in [r_idx, c_idx]:
pass
else:
r_idx, c_idx = reduce_index(table, rotated, r_idx, c_idx)
table.cells[r_idx][c_idx].add_text(t.get_text().strip('\n'))
if f is not None:
table = fill(table, f=f)
data = []
for i in range(len(table.cells)):
data.append([table.cells[i][j].get_text().strip().encode('utf-8')
for j in range(len(table.cells[i]))])
if rotated == 'left':
data = zip(*data[::-1])
elif rotated == 'right':
data = zip(*data[::1])
data.reverse()
data = remove_empty(data)
output['table_%d' % num_tables] = data
num_tables += 1
if debug in ['line', 'table']:
plt.show()
return None
return output

111
pdf.py
View File

@ -1,111 +0,0 @@
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTChar, LTTextLineHorizontal
def parse_text_stream(layout, t=None):
"""Recursively parse pdf layout to get a list of
LTTextHorizontal objects.
Parameters
----------
layout : object
t : list
Returns
-------
t : list
"""
if t is None:
t = []
try:
for obj in layout._objs:
if isinstance(obj, LTTextLineHorizontal):
t.append(obj)
else:
t += parse_text_stream(obj)
except AttributeError:
pass
return t
def parse_text_lattice(layout, t=None):
"""Recursively parse pdf layout to get a list of
LTChar objects.
Parameters
----------
layout : object
t : list
Returns
-------
t : list
"""
if t is None:
t = []
try:
for obj in layout._objs:
if isinstance(obj, LTChar):
t.append(obj)
else:
t += parse_text_lattice(obj)
except AttributeError:
pass
return t
def get_pdf_info(pdfname, method=None, char_margin=2.0, line_margin=0.5,
word_margin=0.1):
"""Get list of text objects along with pdf width and height.
Parameters
----------
pdfname : string
method : string
char_margin : float
line_margin : float
word_margin : float
Returns
-------
text : list
pdf_x : int
pdf_y : int
"""
if not method:
return None
with open(pdfname, 'r') as f:
parser = PDFParser(f)
document = PDFDocument(parser)
if not document.is_extractable:
raise PDFTextExtractionNotAllowed
laparams = LAParams(char_margin=char_margin,
line_margin=line_margin,
word_margin=word_margin)
rsrcmgr = PDFResourceManager()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in PDFPage.create_pages(document):
interpreter.process_page(page)
layout = device.get_result()
if method == 'stream':
text = parse_text_stream(layout)
elif method == 'lattice':
text = parse_text_lattice(layout)
pdf_x, pdf_y = layout.bbox[2], layout.bbox[3]
return text, pdf_x, pdf_y

8
requirements.txt 100644
View File

@ -0,0 +1,8 @@
docopt
matplotlib
nose
pdfminer
pyexcel-xlsx
PyPDF2
Sphinx
Wand

80
setup.py 100644
View File

@ -0,0 +1,80 @@
from pkg_resources import parse_version
import camelot
NAME = 'camelot'
VERSION = camelot.__version__
DESCRIPTION = 'camelot parses tables from PDFs!'
with open('README.md') as f:
LONG_DESCRIPTION = f.read()
URL = 'https://github.com/socialcopsdev/camelot'
AUTHOR = 'Vinayak Mehta'
AUTHOR_EMAIL = 'vinayak@socialcops.com'
LICENSE = 'BSD License'
opencv_min_version = '2.4.8'
def get_opencv_status():
"""
Returns a dictionary containing a boolean specifying whether OpenCV
is up-to-date, along with the version string (empty string if
not installed).
"""
opencv_status = {}
try:
import cv2
opencv_version = cv2.__version__
opencv_status['up_to_date'] = parse_version(
opencv_version) >= parse_version(opencv_min_version)
opencv_status['version'] = opencv_version
except ImportError:
opencv_status['up_to_date'] = False
opencv_status['version'] = ""
return opencv_status
def setup_package():
reqs = []
with open('requirements.txt', 'r') as f:
for line in f:
reqs.append(line.strip())
metadata = dict(name=NAME,
version=VERSION,
description=DESCRIPTION,
long_description=LONG_DESCRIPTION,
url=URL,
author=AUTHOR,
author_email=AUTHOR_EMAIL,
license=LICENSE,
keywords='parse scrape pdf table',
packages=['camelot'],
install_requires=reqs,
scripts=['tools/camelot'])
try:
from setuptools import setup
except:
from distutils.core import setup
opencv_status = get_opencv_status()
opencv_req_str = "camelot requires OpenCV >= {0}.\n".format(opencv_min_version)
instructions = ("Installation instructions are available in the README at "
"https://github.com/socialcopsdev/camelot")
if opencv_status['up_to_date'] is False:
if opencv_status['version']:
raise ImportError("Your installation of OpenCV "
"{0} is out-of-date.\n{1}{2}"
.format(opencv_status['version'],
opencv_req_str, instructions))
else:
raise ImportError("OpenCV is not installed.\n{0}{1}"
.format(opencv_req_str, instructions))
setup(**metadata)
if __name__ == '__main__':
setup_package()

143
stream.py
View File

@ -1,143 +0,0 @@
import os
import numpy as np
from pdf import get_pdf_info
def overlap(l):
"""Groups overlapping columns and returns list with updated
columns boundaries.
Parameters
----------
l : list
List of column x-coordinates.
Returns
-------
merged : list
List of merged column x-coordinates.
"""
merged = []
for higher in l:
if not merged:
merged.append(higher)
else:
lower = merged[-1]
if higher[0] <= lower[1]:
upper_bound = max(lower[1], higher[1])
lower_bound = min(lower[0], higher[0])
merged[-1] = (lower_bound, upper_bound)
else:
merged.append(higher)
return merged
def stream(filepath, ncolumns=0, columns=None, char_margin=2.0,
line_margin=0.5, word_margin=0.1, debug=False):
"""Stream algorithm
Groups data returned by PDFMiner into rows and finds mode of the
number of elements in each row to guess number of columns.
Parameters
----------
filepath : string
ncolumns : int, default: 0, optional
Number of columns.
columns : string, default: None, optional
Comma-separated list of column x-coordinates.
char_margin : float, default: 2.0, optional
Char margin. Chars closer than cmargin are grouped together
to form a word.
line_margin : float, default: 0.5, optional
Line margin. Lines closer than lmargin are grouped together
to form a textbox.
word_margin : float, default: 0.1, optional
Word margin. Insert blank spaces between chars if distance
between words is greater than word margin.
debug : bool, default: False, optional
Debug by visualizing textboxes.
Returns
-------
output : list
"""
filename = os.path.basename(filepath)
text, __, __ = get_pdf_info(filepath, method='stream', char_margin=char_margin,
line_margin=line_margin, word_margin=word_margin)
text.sort(key=lambda x: (-x.y0, x.x0))
y_last = 0
data = []
temp = []
elements = []
for t in text:
# is checking for upright necessary?
# if t.get_text().strip() and all([obj.upright for obj in t._objs if
# type(obj) is LTChar]):
if t.get_text().strip():
if not np.isclose(y_last, t.y0, atol=2):
y_last = t.y0
elements.append(len(temp))
data.append(temp)
temp = []
temp.append(t)
if debug:
import matplotlib.pyplot as plt
import matplotlib.patches as patches
fig = plt.figure()
ax = fig.add_subplot(111, aspect='equal')
xs, ys = [], []
for d in data:
for t in d:
xs.extend([t.x0, t.x1])
ys.extend([t.y0, t.y1])
ax.add_patch(
patches.Rectangle(
(t.x0, t.y0),
t.x1 - t.x0,
t.y1 - t.y0
)
)
ax.set_xlim(min(xs) - 10, max(xs) + 10)
ax.set_ylim(min(ys) - 10, max(ys) + 10)
plt.show()
return None
if columns:
columns = columns.split(',')
cols = [(float(columns[i]), float(columns[i + 1]))
for i in range(0, len(columns) - 1)]
cols = [(c[0] + c[1]) / 2.0 for c in cols]
else:
# a table can't have just 1 column, can it?
elements = filter(lambda x: x != 1, elements)
mode = ncolumns if ncolumns else max(set(elements), key=elements.count)
cols = [(t.x0, t.x1) for d in data for t in d if len(d) == mode]
cols = overlap(sorted(cols))
cols = [(c[0] + c[1]) / 2.0 for c in cols]
output = [['' for c in cols] for d in data]
for row, d in enumerate(data):
for t in d:
cog = (t.x0 + t.x1) / 2.0
diff = [(i, abs(cog - c)) for i, c in enumerate(cols)]
if diff:
idx = min(diff, key=lambda x: x[1])
else:
print "couldn't find a table on this page"
return None
if output[row][idx[0]]:
output[row][idx[0]] += ' ' + t.get_text().strip()
else:
output[row][idx[0]] = t.get_text().strip()
return output

4881
tests/assam.pdf 100644

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
tests/health.pdf 100644

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
tests/medicine.pdf 100644

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
{"numExpectedTables":7,"numCorrectlyDetectedTables":7,"numErroneouslyDetectedTables":0,"expectedFailure":false}

View File

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="competition-entry-region-model.xsd" filename='bm_eu-002-reg.xml'>
<table id='1'>
<region id='1' page='1'>
<instruction instr-id='218'/>
<instruction instr-id='248'/>
<instruction instr-id='278'/>
<instruction instr-id='308'/>
<instruction instr-id='337'/>
<instruction instr-id='337' subinstr-id='2'/>
<instruction instr-id='337' subinstr-id='4'/>
<instruction instr-id='337' subinstr-id='6'/>
<instruction instr-id='337' subinstr-id='8'/>
<instruction instr-id='415'/>
<instruction instr-id='444'/>
<instruction instr-id='444' subinstr-id='2'/>
<instruction instr-id='444' subinstr-id='4'/>
<instruction instr-id='471'/>
<instruction instr-id='471' subinstr-id='2'/>
<instruction instr-id='471' subinstr-id='4'/>
<instruction instr-id='498'/>
<instruction instr-id='498' subinstr-id='2'/>
<instruction instr-id='498' subinstr-id='4'/>
<instruction instr-id='525'/>
<instruction instr-id='525' subinstr-id='2'/>
<instruction instr-id='525' subinstr-id='4'/>
<instruction instr-id='552'/>
<instruction instr-id='552' subinstr-id='2'/>
<instruction instr-id='552' subinstr-id='4'/>
<instruction instr-id='552' subinstr-id='6'/>
<instruction instr-id='624'/>
<instruction instr-id='653'/>
<instruction instr-id='653' subinstr-id='2'/>
<instruction instr-id='653' subinstr-id='4'/>
<instruction instr-id='680'/>
<instruction instr-id='680' subinstr-id='2'/>
<instruction instr-id='680' subinstr-id='4'/>
<instruction instr-id='707'/>
<instruction instr-id='707' subinstr-id='2'/>
<instruction instr-id='707' subinstr-id='4'/>
<instruction instr-id='734'/>
<instruction instr-id='734' subinstr-id='2'/>
<instruction instr-id='734' subinstr-id='4'/>
<instruction instr-id='761'/>
<instruction instr-id='761' subinstr-id='2'/>
<instruction instr-id='761' subinstr-id='4'/>
<instruction instr-id='761' subinstr-id='6'/>
<instruction instr-id='833'/>
<instruction instr-id='862'/>
<instruction instr-id='862' subinstr-id='2'/>
<instruction instr-id='862' subinstr-id='4'/>
<instruction instr-id='889'/>
<instruction instr-id='889' subinstr-id='2'/>
<instruction instr-id='889' subinstr-id='4'/>
<instruction instr-id='916'/>
<instruction instr-id='916' subinstr-id='2'/>
<instruction instr-id='916' subinstr-id='4'/>
<instruction instr-id='943'/>
<instruction instr-id='943' subinstr-id='2'/>
<instruction instr-id='943' subinstr-id='4'/>
<instruction instr-id='943' subinstr-id='6'/>
<instruction instr-id='970'/>
<instruction instr-id='970' subinstr-id='2'/>
<instruction instr-id='970' subinstr-id='4'/>
<instruction instr-id='970' subinstr-id='6'/>
<instruction instr-id='1042'/>
<instruction instr-id='1071'/>
<instruction instr-id='1071' subinstr-id='2'/>
<instruction instr-id='1071' subinstr-id='4'/>
<instruction instr-id='1071' subinstr-id='6'/>
<instruction instr-id='1098'/>
<instruction instr-id='1098' subinstr-id='2'/>
<instruction instr-id='1098' subinstr-id='4'/>
<instruction instr-id='1098' subinstr-id='6'/>
<instruction instr-id='1125'/>
<instruction instr-id='1125' subinstr-id='2'/>
<instruction instr-id='1125' subinstr-id='4'/>
<instruction instr-id='1125' subinstr-id='6'/>
<instruction instr-id='1152'/>
<instruction instr-id='1152' subinstr-id='2'/>
<instruction instr-id='1152' subinstr-id='4'/>
<instruction instr-id='1152' subinstr-id='6'/>
<instruction instr-id='1179'/>
<instruction instr-id='1179' subinstr-id='2'/>
<instruction instr-id='1179' subinstr-id='4'/>
<instruction instr-id='1179' subinstr-id='6'/>
<instruction instr-id='1251'/>
<instruction instr-id='1280'/>
<instruction instr-id='1280' subinstr-id='2'/>
<instruction instr-id='1280' subinstr-id='4'/>
<instruction instr-id='1280' subinstr-id='6'/>
<instruction instr-id='1308'/>
<instruction instr-id='1369'/>
<instruction instr-id='1369' subinstr-id='2'/>
<instruction instr-id='1369' subinstr-id='4'/>
<instruction instr-id='1369' subinstr-id='6'/>
<bounding-box x1='124' y1='499' x2='507' y2='630'/>
</region>
</table>
</document>

View File

@ -0,0 +1,232 @@
<?xml version="1.0" encoding="UTF-8"?>
<document filename="bm_eu-002-str.xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="competition-entry-structure-model.xsd">
<table id="1">
<region col-increment="0" id="1" page="1" row-increment="0">
<cell id="1" start-col="1" start-row="0">
<bounding-box x1="200" x2="215" y1="619" y2="630"/>
<content>Q1</content>
<instruction instr-id="218" subinstr-id="0"/>
</cell>
<cell id="1" start-col="2" start-row="0">
<bounding-box x1="272" x2="287" y1="619" y2="630"/>
<content>Q2</content>
<instruction instr-id="248" subinstr-id="0"/>
</cell>
<cell id="1" start-col="3" start-row="0">
<bounding-box x1="343" x2="358" y1="619" y2="630"/>
<content>Q3</content>
<instruction instr-id="278" subinstr-id="0"/>
</cell>
<cell id="1" start-col="4" start-row="0">
<bounding-box x1="415" x2="429" y1="619" y2="630"/>
<content>Q4</content>
<instruction instr-id="308" subinstr-id="0"/>
</cell>
<cell id="1" start-col="5" start-row="0">
<bounding-box x1="482" x2="505" y1="619" y2="630"/>
<content>Total</content>
<instruction instr-id="337" subinstr-id="0"/>
<instruction instr-id="337" subinstr-id="2"/>
<instruction instr-id="337" subinstr-id="4"/>
<instruction instr-id="337" subinstr-id="6"/>
<instruction instr-id="337" subinstr-id="8"/>
</cell>
<cell id="1" start-col="0" start-row="1">
<bounding-box x1="124" x2="149" y1="595" y2="606"/>
<content>2004</content>
<instruction instr-id="415" subinstr-id="0"/>
</cell>
<cell id="1" start-col="1" start-row="1">
<bounding-box x1="197" x2="218" y1="595" y2="606"/>
<content>34.7</content>
<instruction instr-id="444" subinstr-id="0"/>
<instruction instr-id="444" subinstr-id="2"/>
<instruction instr-id="444" subinstr-id="4"/>
</cell>
<cell id="1" start-col="2" start-row="1">
<bounding-box x1="269" x2="290" y1="595" y2="606"/>
<content>36.2</content>
<instruction instr-id="471" subinstr-id="0"/>
<instruction instr-id="471" subinstr-id="2"/>
<instruction instr-id="471" subinstr-id="4"/>
</cell>
<cell id="1" start-col="3" start-row="1">
<bounding-box x1="340" x2="361" y1="595" y2="606"/>
<content>44.5</content>
<instruction instr-id="498" subinstr-id="0"/>
<instruction instr-id="498" subinstr-id="2"/>
<instruction instr-id="498" subinstr-id="4"/>
</cell>
<cell id="1" start-col="4" start-row="1">
<bounding-box x1="412" x2="432" y1="595" y2="606"/>
<content>51.3</content>
<instruction instr-id="525" subinstr-id="0"/>
<instruction instr-id="525" subinstr-id="2"/>
<instruction instr-id="525" subinstr-id="4"/>
</cell>
<cell id="1" start-col="5" start-row="1">
<bounding-box x1="480" x2="507" y1="595" y2="606"/>
<content>166.7</content>
<instruction instr-id="552" subinstr-id="0"/>
<instruction instr-id="552" subinstr-id="2"/>
<instruction instr-id="552" subinstr-id="4"/>
<instruction instr-id="552" subinstr-id="6"/>
</cell>
<cell id="1" start-col="0" start-row="2">
<bounding-box x1="124" x2="149" y1="571" y2="582"/>
<content>2005</content>
<instruction instr-id="624" subinstr-id="0"/>
</cell>
<cell id="1" start-col="1" start-row="2">
<bounding-box x1="197" x2="218" y1="571" y2="582"/>
<content>58.1</content>
<instruction instr-id="653" subinstr-id="0"/>
<instruction instr-id="653" subinstr-id="2"/>
<instruction instr-id="653" subinstr-id="4"/>
</cell>
<cell id="1" start-col="2" start-row="2">
<bounding-box x1="269" x2="290" y1="571" y2="582"/>
<content>63.4</content>
<instruction instr-id="680" subinstr-id="0"/>
<instruction instr-id="680" subinstr-id="2"/>
<instruction instr-id="680" subinstr-id="4"/>
</cell>
<cell id="1" start-col="3" start-row="2">
<bounding-box x1="340" x2="361" y1="571" y2="582"/>
<content>61.6</content>
<instruction instr-id="707" subinstr-id="0"/>
<instruction instr-id="707" subinstr-id="2"/>
<instruction instr-id="707" subinstr-id="4"/>
</cell>
<cell id="1" start-col="4" start-row="2">
<bounding-box x1="412" x2="432" y1="571" y2="582"/>
<content>55.2</content>
<instruction instr-id="734" subinstr-id="0"/>
<instruction instr-id="734" subinstr-id="2"/>
<instruction instr-id="734" subinstr-id="4"/>
</cell>
<cell id="1" start-col="5" start-row="2">
<bounding-box x1="480" x2="507" y1="571" y2="582"/>
<content>238.4</content>
<instruction instr-id="761" subinstr-id="0"/>
<instruction instr-id="761" subinstr-id="2"/>
<instruction instr-id="761" subinstr-id="4"/>
<instruction instr-id="761" subinstr-id="6"/>
</cell>
<cell id="1" start-col="0" start-row="3">
<bounding-box x1="124" x2="149" y1="547" y2="558"/>
<content>2006</content>
<instruction instr-id="833" subinstr-id="0"/>
</cell>
<cell id="1" start-col="1" start-row="3">
<bounding-box x1="197" x2="218" y1="547" y2="558"/>
<content>74.7</content>
<instruction instr-id="862" subinstr-id="0"/>
<instruction instr-id="862" subinstr-id="2"/>
<instruction instr-id="862" subinstr-id="4"/>
</cell>
<cell id="1" start-col="2" start-row="3">
<bounding-box x1="269" x2="290" y1="547" y2="558"/>
<content>84.1</content>
<instruction instr-id="889" subinstr-id="0"/>
<instruction instr-id="889" subinstr-id="2"/>
<instruction instr-id="889" subinstr-id="4"/>
</cell>
<cell id="1" start-col="3" start-row="3">
<bounding-box x1="340" x2="361" y1="547" y2="558"/>
<content>96.5</content>
<instruction instr-id="916" subinstr-id="0"/>
<instruction instr-id="916" subinstr-id="2"/>
<instruction instr-id="916" subinstr-id="4"/>
</cell>
<cell id="1" start-col="4" start-row="3">
<bounding-box x1="409" x2="436" y1="547" y2="558"/>
<content>111.8</content>
<instruction instr-id="943" subinstr-id="0"/>
<instruction instr-id="943" subinstr-id="2"/>
<instruction instr-id="943" subinstr-id="4"/>
<instruction instr-id="943" subinstr-id="6"/>
</cell>
<cell id="1" start-col="5" start-row="3">
<bounding-box x1="480" x2="507" y1="547" y2="558"/>
<content>367.1</content>
<instruction instr-id="970" subinstr-id="0"/>
<instruction instr-id="970" subinstr-id="2"/>
<instruction instr-id="970" subinstr-id="4"/>
<instruction instr-id="970" subinstr-id="6"/>
</cell>
<cell id="1" start-col="0" start-row="4">
<bounding-box x1="124" x2="149" y1="523" y2="534"/>
<content>2007</content>
<instruction instr-id="1042" subinstr-id="0"/>
</cell>
<cell id="1" start-col="1" start-row="4">
<bounding-box x1="194" x2="221" y1="523" y2="534"/>
<content>148.8</content>
<instruction instr-id="1071" subinstr-id="0"/>
<instruction instr-id="1071" subinstr-id="2"/>
<instruction instr-id="1071" subinstr-id="4"/>
<instruction instr-id="1071" subinstr-id="6"/>
</cell>
<cell id="1" start-col="2" start-row="4">
<bounding-box x1="266" x2="293" y1="523" y2="534"/>
<content>142.3</content>
<instruction instr-id="1098" subinstr-id="0"/>
<instruction instr-id="1098" subinstr-id="2"/>
<instruction instr-id="1098" subinstr-id="4"/>
<instruction instr-id="1098" subinstr-id="6"/>
</cell>
<cell id="1" start-col="3" start-row="4">
<bounding-box x1="337" x2="364" y1="523" y2="534"/>
<content>156.7</content>
<instruction instr-id="1125" subinstr-id="0"/>
<instruction instr-id="1125" subinstr-id="2"/>
<instruction instr-id="1125" subinstr-id="4"/>
<instruction instr-id="1125" subinstr-id="6"/>
</cell>
<cell id="1" start-col="4" start-row="4">
<bounding-box x1="409" x2="436" y1="523" y2="534"/>
<content>186.1</content>
<instruction instr-id="1152" subinstr-id="0"/>
<instruction instr-id="1152" subinstr-id="2"/>
<instruction instr-id="1152" subinstr-id="4"/>
<instruction instr-id="1152" subinstr-id="6"/>
</cell>
<cell id="1" start-col="5" start-row="4">
<bounding-box x1="480" x2="507" y1="523" y2="534"/>
<content>633.9</content>
<instruction instr-id="1179" subinstr-id="0"/>
<instruction instr-id="1179" subinstr-id="2"/>
<instruction instr-id="1179" subinstr-id="4"/>
<instruction instr-id="1179" subinstr-id="6"/>
</cell>
<cell id="1" start-col="0" start-row="5">
<bounding-box x1="124" x2="149" y1="499" y2="510"/>
<content>2008</content>
<instruction instr-id="1251" subinstr-id="0"/>
</cell>
<cell id="1" start-col="1" start-row="5">
<bounding-box x1="194" x2="221" y1="499" y2="510"/>
<content>120.9</content>
<instruction instr-id="1280" subinstr-id="0"/>
<instruction instr-id="1280" subinstr-id="2"/>
<instruction instr-id="1280" subinstr-id="4"/>
<instruction instr-id="1280" subinstr-id="6"/>
</cell>
<cell id="1" start-col="2" start-row="5">
<bounding-box x1="270" x2="288" y1="499" y2="510"/>
<content>106</content>
<instruction instr-id="1308" subinstr-id="0"/>
</cell>
<cell id="1" start-col="5" start-row="5">
<bounding-box x1="480" x2="507" y1="499" y2="510"/>
<content>226.8</content>
<instruction instr-id="1369" subinstr-id="0"/>
<instruction instr-id="1369" subinstr-id="2"/>
<instruction instr-id="1369" subinstr-id="4"/>
<instruction instr-id="1369" subinstr-id="6"/>
</cell>
</region>
</table>
</document>

View File

@ -0,0 +1 @@
{"numExpectedTables":1,"numCorrectlyDetectedTables":1,"numErroneouslyDetectedTables":0,"expectedFailure":false}

View File

@ -0,0 +1,253 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="competition-entry-region-model.xsd" filename='bm_eu-003-reg.xml'>
<table id='1'>
<region id='1' page='1'>
<instruction instr-id='92' subinstr-id='2'/>
<instruction instr-id='100'/>
<instruction instr-id='100' subinstr-id='2'/>
<instruction instr-id='100' subinstr-id='4'/>
<instruction instr-id='100' subinstr-id='6'/>
<instruction instr-id='100' subinstr-id='8'/>
<instruction instr-id='100' subinstr-id='10'/>
<instruction instr-id='100' subinstr-id='12'/>
<instruction instr-id='100' subinstr-id='14'/>
<instruction instr-id='100' subinstr-id='16'/>
<instruction instr-id='100' subinstr-id='18'/>
<instruction instr-id='106'/>
<instruction instr-id='127'/>
<instruction instr-id='127' subinstr-id='2'/>
<instruction instr-id='127' subinstr-id='4'/>
<instruction instr-id='127' subinstr-id='6'/>
<instruction instr-id='127' subinstr-id='8'/>
<instruction instr-id='127' subinstr-id='10'/>
<instruction instr-id='127' subinstr-id='12'/>
<instruction instr-id='127' subinstr-id='14'/>
<instruction instr-id='133'/>
<instruction instr-id='133' subinstr-id='2'/>
<instruction instr-id='133' subinstr-id='4'/>
<instruction instr-id='137'/>
<instruction instr-id='154'/>
<instruction instr-id='154' subinstr-id='2'/>
<instruction instr-id='154' subinstr-id='4'/>
<instruction instr-id='154' subinstr-id='6'/>
<instruction instr-id='154' subinstr-id='8'/>
<instruction instr-id='154' subinstr-id='10'/>
<instruction instr-id='154' subinstr-id='12'/>
<instruction instr-id='154' subinstr-id='14'/>
<instruction instr-id='160'/>
<instruction instr-id='160' subinstr-id='4'/>
<instruction instr-id='160' subinstr-id='6'/>
<instruction instr-id='160' subinstr-id='8'/>
<instruction instr-id='160' subinstr-id='10'/>
<instruction instr-id='160' subinstr-id='14'/>
<instruction instr-id='160' subinstr-id='16'/>
<instruction instr-id='160' subinstr-id='20'/>
<instruction instr-id='166'/>
<instruction instr-id='171'/>
<instruction instr-id='175'/>
<bounding-box x1='92' y1='564' x2='519' y2='651'/>
</region>
</table>
<table id='2'>
<region id='1' page='1'>
<instruction instr-id='222'/>
<instruction instr-id='222' subinstr-id='2'/>
<instruction instr-id='222' subinstr-id='6'/>
<instruction instr-id='226'/>
<instruction instr-id='226' subinstr-id='2'/>
<instruction instr-id='232'/>
<instruction instr-id='232' subinstr-id='2'/>
<instruction instr-id='236'/>
<instruction instr-id='236' subinstr-id='2'/>
<instruction instr-id='236' subinstr-id='4'/>
<instruction instr-id='242'/>
<instruction instr-id='242' subinstr-id='2'/>
<instruction instr-id='242' subinstr-id='4'/>
<instruction instr-id='247'/>
<instruction instr-id='251'/>
<instruction instr-id='251' subinstr-id='2'/>
<instruction instr-id='251' subinstr-id='4'/>
<instruction instr-id='257'/>
<instruction instr-id='263'/>
<instruction instr-id='263' subinstr-id='2'/>
<instruction instr-id='268'/>
<instruction instr-id='268' subinstr-id='2'/>
<instruction instr-id='268' subinstr-id='4'/>
<instruction instr-id='268' subinstr-id='6'/>
<instruction instr-id='268' subinstr-id='8'/>
<instruction instr-id='274'/>
<instruction instr-id='278'/>
<instruction instr-id='278' subinstr-id='4'/>
<instruction instr-id='278' subinstr-id='6'/>
<instruction instr-id='278' subinstr-id='8'/>
<instruction instr-id='283'/>
<instruction instr-id='283' subinstr-id='2'/>
<instruction instr-id='283' subinstr-id='4'/>
<instruction instr-id='288'/>
<instruction instr-id='288' subinstr-id='2'/>
<instruction instr-id='288' subinstr-id='4'/>
<instruction instr-id='320'/>
<instruction instr-id='320' subinstr-id='2'/>
<instruction instr-id='320' subinstr-id='4'/>
<instruction instr-id='320' subinstr-id='6'/>
<instruction instr-id='320' subinstr-id='8'/>
<instruction instr-id='320' subinstr-id='10'/>
<instruction instr-id='320' subinstr-id='12'/>
<instruction instr-id='348'/>
<instruction instr-id='348' subinstr-id='2'/>
<instruction instr-id='348' subinstr-id='4'/>
<instruction instr-id='348' subinstr-id='6'/>
<instruction instr-id='348' subinstr-id='8'/>
<instruction instr-id='348' subinstr-id='10'/>
<instruction instr-id='348' subinstr-id='12'/>
<instruction instr-id='376'/>
<instruction instr-id='376' subinstr-id='2'/>
<instruction instr-id='376' subinstr-id='4'/>
<instruction instr-id='376' subinstr-id='6'/>
<instruction instr-id='376' subinstr-id='8'/>
<instruction instr-id='376' subinstr-id='10'/>
<instruction instr-id='376' subinstr-id='12'/>
<instruction instr-id='404'/>
<instruction instr-id='404' subinstr-id='2'/>
<instruction instr-id='404' subinstr-id='4'/>
<instruction instr-id='404' subinstr-id='6'/>
<instruction instr-id='404' subinstr-id='8'/>
<instruction instr-id='404' subinstr-id='10'/>
<instruction instr-id='404' subinstr-id='12'/>
<instruction instr-id='430'/>
<instruction instr-id='430' subinstr-id='2'/>
<instruction instr-id='430' subinstr-id='4'/>
<instruction instr-id='430' subinstr-id='6'/>
<instruction instr-id='430' subinstr-id='8'/>
<instruction instr-id='430' subinstr-id='10'/>
<instruction instr-id='430' subinstr-id='12'/>
<instruction instr-id='457'/>
<instruction instr-id='457' subinstr-id='4'/>
<bounding-box x1='92' y1='407' x2='519' y2='529'/>
</region>
</table>
<table id='3'>
<region id='1' page='1'>
<instruction instr-id='519'/>
<instruction instr-id='519' subinstr-id='2'/>
<instruction instr-id='519' subinstr-id='4'/>
<instruction instr-id='519' subinstr-id='6'/>
<instruction instr-id='523'/>
<instruction instr-id='523' subinstr-id='2'/>
<instruction instr-id='529'/>
<instruction instr-id='529' subinstr-id='2'/>
<instruction instr-id='529' subinstr-id='4'/>
<instruction instr-id='529' subinstr-id='6'/>
<instruction instr-id='529' subinstr-id='8'/>
<instruction instr-id='534'/>
<instruction instr-id='534' subinstr-id='2'/>
<instruction instr-id='534' subinstr-id='4'/>
<instruction instr-id='539'/>
<instruction instr-id='545'/>
<instruction instr-id='553'/>
<instruction instr-id='553' subinstr-id='2'/>
<instruction instr-id='558'/>
<instruction instr-id='558' subinstr-id='2'/>
<instruction instr-id='558' subinstr-id='4'/>
<instruction instr-id='563'/>
<instruction instr-id='563' subinstr-id='2'/>
<instruction instr-id='568'/>
<instruction instr-id='573'/>
<instruction instr-id='573' subinstr-id='2'/>
<instruction instr-id='573' subinstr-id='4'/>
<instruction instr-id='573' subinstr-id='6'/>
<instruction instr-id='573' subinstr-id='8'/>
<instruction instr-id='580'/>
<instruction instr-id='585'/>
<instruction instr-id='585' subinstr-id='2'/>
<instruction instr-id='585' subinstr-id='4'/>
<instruction instr-id='585' subinstr-id='6'/>
<instruction instr-id='585' subinstr-id='8'/>
<instruction instr-id='585' subinstr-id='12'/>
<instruction instr-id='585' subinstr-id='14'/>
<instruction instr-id='585' subinstr-id='16'/>
<instruction instr-id='585' subinstr-id='18'/>
<instruction instr-id='590'/>
<instruction instr-id='590' subinstr-id='2'/>
<instruction instr-id='595'/>
<instruction instr-id='595' subinstr-id='2'/>
<instruction instr-id='595' subinstr-id='4'/>
<instruction instr-id='600'/>
<instruction instr-id='600' subinstr-id='2'/>
<instruction instr-id='600' subinstr-id='4'/>
<instruction instr-id='606'/>
<instruction instr-id='614'/>
<instruction instr-id='614' subinstr-id='2'/>
<instruction instr-id='614' subinstr-id='4'/>
<instruction instr-id='614' subinstr-id='6'/>
<instruction instr-id='619'/>
<instruction instr-id='619' subinstr-id='2'/>
<instruction instr-id='624'/>
<instruction instr-id='624' subinstr-id='2'/>
<instruction instr-id='624' subinstr-id='4'/>
<instruction instr-id='624' subinstr-id='6'/>
<instruction instr-id='624' subinstr-id='8'/>
<instruction instr-id='629'/>
<instruction instr-id='634'/>
<instruction instr-id='639'/>
<instruction instr-id='639' subinstr-id='2'/>
<instruction instr-id='646'/>
<instruction instr-id='646' subinstr-id='2'/>
<instruction instr-id='646' subinstr-id='4'/>
<instruction instr-id='646' subinstr-id='6'/>
<instruction instr-id='673'/>
<instruction instr-id='673' subinstr-id='2'/>
<instruction instr-id='673' subinstr-id='4'/>
<instruction instr-id='679'/>
<instruction instr-id='683'/>
<instruction instr-id='689'/>
<instruction instr-id='695'/>
<instruction instr-id='695' subinstr-id='2'/>
<instruction instr-id='695' subinstr-id='4'/>
<instruction instr-id='695' subinstr-id='6'/>
<instruction instr-id='701'/>
<instruction instr-id='705'/>
<instruction instr-id='705' subinstr-id='2'/>
<instruction instr-id='728'/>
<instruction instr-id='728' subinstr-id='2'/>
<instruction instr-id='728' subinstr-id='4'/>
<instruction instr-id='728' subinstr-id='6'/>
<instruction instr-id='734'/>
<instruction instr-id='740'/>
<instruction instr-id='746'/>
<instruction instr-id='746' subinstr-id='2'/>
<instruction instr-id='752'/>
<instruction instr-id='752' subinstr-id='2'/>
<instruction instr-id='752' subinstr-id='4'/>
<instruction instr-id='758'/>
<instruction instr-id='758' subinstr-id='2'/>
<instruction instr-id='758' subinstr-id='4'/>
<instruction instr-id='758' subinstr-id='6'/>
<instruction instr-id='758' subinstr-id='8'/>
<instruction instr-id='764'/>
<instruction instr-id='764' subinstr-id='2'/>
<instruction instr-id='764' subinstr-id='4'/>
<instruction instr-id='764' subinstr-id='6'/>
<instruction instr-id='768'/>
<instruction instr-id='768' subinstr-id='2'/>
<instruction instr-id='791'/>
<instruction instr-id='791' subinstr-id='2'/>
<instruction instr-id='791' subinstr-id='4'/>
<instruction instr-id='797'/>
<instruction instr-id='801'/>
<instruction instr-id='807'/>
<instruction instr-id='807' subinstr-id='2'/>
<instruction instr-id='813'/>
<instruction instr-id='813' subinstr-id='2'/>
<instruction instr-id='818'/>
<instruction instr-id='818' subinstr-id='2'/>
<instruction instr-id='823'/>
<instruction instr-id='823' subinstr-id='2'/>
<instruction instr-id='826'/>
<instruction instr-id='834'/>
<instruction instr-id='834' subinstr-id='2'/>
<bounding-box x1='92' y1='77' x2='489' y2='373'/>
</region>
</table>
</document>

View File

@ -0,0 +1,565 @@
<?xml version="1.0" encoding="UTF-8"?>
<document filename="bm_eu-003-str.xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="competition-entry-structure-model.xsd">
<table id="1">
<region col-increment="0" id="1" page="1" row-increment="0">
<cell id="1" start-col="1" start-row="0">
<bounding-box x1="238" x2="337" y1="641" y2="651"/>
<content>All companies analysed</content>
<instruction instr-id="92" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="0">
<bounding-box x1="383" x2="519" y1="630" y2="651"/>
<content>FTSE Eurotop 100 companies
analysed</content>
<instruction instr-id="100" subinstr-id="0"/>
<instruction instr-id="100" subinstr-id="2"/>
<instruction instr-id="100" subinstr-id="4"/>
<instruction instr-id="100" subinstr-id="6"/>
<instruction instr-id="100" subinstr-id="8"/>
<instruction instr-id="100" subinstr-id="10"/>
<instruction instr-id="100" subinstr-id="12"/>
<instruction instr-id="100" subinstr-id="14"/>
<instruction instr-id="100" subinstr-id="16"/>
<instruction instr-id="100" subinstr-id="18"/>
<instruction instr-id="106" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="1">
<bounding-box x1="92" x2="228" y1="608" y2="629"/>
<content>Number of member states in
the analysis</content>
<instruction instr-id="127" subinstr-id="0"/>
<instruction instr-id="127" subinstr-id="2"/>
<instruction instr-id="127" subinstr-id="4"/>
<instruction instr-id="127" subinstr-id="6"/>
<instruction instr-id="127" subinstr-id="8"/>
<instruction instr-id="127" subinstr-id="10"/>
<instruction instr-id="127" subinstr-id="12"/>
<instruction instr-id="127" subinstr-id="14"/>
<instruction instr-id="133" subinstr-id="0"/>
<instruction instr-id="133" subinstr-id="2"/>
<instruction instr-id="133" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="1">
<bounding-box x1="238" x2="249" y1="619" y2="629"/>
<content>21</content>
<instruction instr-id="137" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="1">
<bounding-box x1="383" x2="389" y1="619" y2="629"/>
<content>8</content>
<instruction instr-id="137" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="2">
<bounding-box x1="92" x2="228" y1="564" y2="607"/>
<content>Number of member states
where one or more of the
financial companies applied the
amendment</content>
<instruction instr-id="154" subinstr-id="0"/>
<instruction instr-id="154" subinstr-id="2"/>
<instruction instr-id="154" subinstr-id="4"/>
<instruction instr-id="154" subinstr-id="6"/>
<instruction instr-id="154" subinstr-id="8"/>
<instruction instr-id="154" subinstr-id="10"/>
<instruction instr-id="154" subinstr-id="12"/>
<instruction instr-id="154" subinstr-id="14"/>
<instruction instr-id="160" subinstr-id="0"/>
<instruction instr-id="160" subinstr-id="4"/>
<instruction instr-id="160" subinstr-id="6"/>
<instruction instr-id="160" subinstr-id="8"/>
<instruction instr-id="160" subinstr-id="10"/>
<instruction instr-id="160" subinstr-id="14"/>
<instruction instr-id="160" subinstr-id="16"/>
<instruction instr-id="160" subinstr-id="20"/>
<instruction instr-id="166" subinstr-id="-1"/>
<instruction instr-id="171" subinstr-id="0"/>
</cell>
<cell id="1" start-col="1" start-row="2">
<bounding-box x1="238" x2="249" y1="596" y2="607"/>
<content>11</content>
<instruction instr-id="175" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="2">
<bounding-box x1="383" x2="389" y1="596" y2="607"/>
<content>3</content>
<instruction instr-id="175" subinstr-id="-1"/>
</cell>
</region>
</table>
<table id="2">
<region col-increment="0" id="1" page="1" row-increment="0">
<cell id="1" start-col="1" start-row="0">
<bounding-box x1="209" x2="279" y1="497" y2="529"/>
<content>Number of
financial
companies</content>
<instruction instr-id="222" subinstr-id="0"/>
<instruction instr-id="222" subinstr-id="2"/>
<instruction instr-id="222" subinstr-id="6"/>
<instruction instr-id="226" subinstr-id="0"/>
<instruction instr-id="226" subinstr-id="2"/>
<instruction instr-id="232" subinstr-id="0"/>
<instruction instr-id="232" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="0">
<bounding-box x1="289" x2="359" y1="497" y2="529"/>
<content>Pct of all
companies
analysed</content>
<instruction instr-id="236" subinstr-id="0"/>
<instruction instr-id="236" subinstr-id="2"/>
<instruction instr-id="236" subinstr-id="4"/>
<instruction instr-id="242" subinstr-id="0"/>
<instruction instr-id="242" subinstr-id="2"/>
<instruction instr-id="242" subinstr-id="4"/>
<instruction instr-id="247" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="0">
<bounding-box x1="369" x2="439" y1="475" y2="529"/>
<content>Number of
financial
companies on
FTSE Eurotop
100</content>
<instruction instr-id="251" subinstr-id="0"/>
<instruction instr-id="251" subinstr-id="2"/>
<instruction instr-id="251" subinstr-id="4"/>
<instruction instr-id="257" subinstr-id="-1"/>
<instruction instr-id="263" subinstr-id="0"/>
<instruction instr-id="263" subinstr-id="2"/>
<instruction instr-id="268" subinstr-id="0"/>
<instruction instr-id="268" subinstr-id="2"/>
<instruction instr-id="268" subinstr-id="4"/>
<instruction instr-id="268" subinstr-id="6"/>
<instruction instr-id="268" subinstr-id="8"/>
<instruction instr-id="274" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="4" start-row="0">
<bounding-box x1="449" x2="519" y1="497" y2="529"/>
<content>Pct of FTSE
Eurotop 100
companies</content>
<instruction instr-id="278" subinstr-id="0"/>
<instruction instr-id="278" subinstr-id="4"/>
<instruction instr-id="278" subinstr-id="6"/>
<instruction instr-id="278" subinstr-id="8"/>
<instruction instr-id="283" subinstr-id="0"/>
<instruction instr-id="283" subinstr-id="2"/>
<instruction instr-id="283" subinstr-id="4"/>
<instruction instr-id="288" subinstr-id="0"/>
<instruction instr-id="288" subinstr-id="2"/>
<instruction instr-id="288" subinstr-id="4"/>
</cell>
<cell id="1" start-col="0" start-row="1">
<bounding-box x1="92" x2="168" y1="464" y2="474"/>
<content>0 reclassifications</content>
<instruction instr-id="320" subinstr-id="0"/>
<instruction instr-id="320" subinstr-id="2"/>
<instruction instr-id="320" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="1">
<bounding-box x1="209" x2="220" y1="464" y2="474"/>
<content>52</content>
<instruction instr-id="320" subinstr-id="6"/>
</cell>
<cell id="1" start-col="2" start-row="1">
<bounding-box x1="289" x2="308" y1="464" y2="474"/>
<content>52%</content>
<instruction instr-id="320" subinstr-id="8"/>
</cell>
<cell id="1" start-col="3" start-row="1">
<bounding-box x1="369" x2="380" y1="464" y2="474"/>
<content>14</content>
<instruction instr-id="320" subinstr-id="10"/>
</cell>
<cell id="1" start-col="4" start-row="1">
<bounding-box x1="449" x2="468" y1="464" y2="474"/>
<content>64%</content>
<instruction instr-id="320" subinstr-id="12"/>
</cell>
<cell id="1" start-col="0" start-row="2">
<bounding-box x1="92" x2="164" y1="452" y2="463"/>
<content>1 reclassification</content>
<instruction instr-id="348" subinstr-id="0"/>
<instruction instr-id="348" subinstr-id="2"/>
<instruction instr-id="348" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="2">
<bounding-box x1="209" x2="220" y1="452" y2="463"/>
<content>28</content>
<instruction instr-id="348" subinstr-id="6"/>
</cell>
<cell id="1" start-col="2" start-row="2">
<bounding-box x1="289" x2="308" y1="452" y2="463"/>
<content>28%</content>
<instruction instr-id="348" subinstr-id="8"/>
</cell>
<cell id="1" start-col="3" start-row="2">
<bounding-box x1="369" x2="375" y1="452" y2="463"/>
<content>4</content>
<instruction instr-id="348" subinstr-id="10"/>
</cell>
<cell id="1" start-col="4" start-row="2">
<bounding-box x1="449" x2="468" y1="452" y2="463"/>
<content>18%</content>
<instruction instr-id="348" subinstr-id="12"/>
</cell>
<cell id="1" start-col="0" start-row="3">
<bounding-box x1="92" x2="168" y1="441" y2="451"/>
<content>2 reclassifications</content>
<instruction instr-id="376" subinstr-id="0"/>
<instruction instr-id="376" subinstr-id="2"/>
<instruction instr-id="376" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="3">
<bounding-box x1="209" x2="220" y1="441" y2="451"/>
<content>11</content>
<instruction instr-id="376" subinstr-id="6"/>
</cell>
<cell id="1" start-col="2" start-row="3">
<bounding-box x1="289" x2="308" y1="441" y2="451"/>
<content>11%</content>
<instruction instr-id="376" subinstr-id="8"/>
</cell>
<cell id="1" start-col="3" start-row="3">
<bounding-box x1="369" x2="375" y1="441" y2="451"/>
<content>2</content>
<instruction instr-id="376" subinstr-id="10"/>
</cell>
<cell id="1" start-col="4" start-row="3">
<bounding-box x1="449" x2="462" y1="441" y2="451"/>
<content>9%</content>
<instruction instr-id="376" subinstr-id="12"/>
</cell>
<cell id="1" start-col="0" start-row="4">
<bounding-box x1="92" x2="168" y1="430" y2="440"/>
<content>3 reclassifications</content>
<instruction instr-id="404" subinstr-id="0"/>
<instruction instr-id="404" subinstr-id="2"/>
<instruction instr-id="404" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="4">
<bounding-box x1="209" x2="215" y1="430" y2="440"/>
<content>8</content>
<instruction instr-id="404" subinstr-id="6"/>
</cell>
<cell id="1" start-col="2" start-row="4">
<bounding-box x1="289" x2="302" y1="430" y2="440"/>
<content>8%</content>
<instruction instr-id="404" subinstr-id="8"/>
</cell>
<cell id="1" start-col="3" start-row="4">
<bounding-box x1="369" x2="375" y1="430" y2="440"/>
<content>2</content>
<instruction instr-id="404" subinstr-id="10"/>
</cell>
<cell id="1" start-col="4" start-row="4">
<bounding-box x1="449" x2="462" y1="430" y2="440"/>
<content>9%</content>
<instruction instr-id="404" subinstr-id="12"/>
</cell>
<cell id="1" start-col="0" start-row="5">
<bounding-box x1="92" x2="168" y1="418" y2="429"/>
<content>4 reclassifications</content>
<instruction instr-id="430" subinstr-id="0"/>
<instruction instr-id="430" subinstr-id="2"/>
<instruction instr-id="430" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="5">
<bounding-box x1="209" x2="215" y1="418" y2="429"/>
<content>1</content>
<instruction instr-id="430" subinstr-id="6"/>
</cell>
<cell id="1" start-col="2" start-row="5">
<bounding-box x1="289" x2="302" y1="418" y2="429"/>
<content>1%</content>
<instruction instr-id="430" subinstr-id="8"/>
</cell>
<cell id="1" start-col="3" start-row="5">
<bounding-box x1="369" x2="375" y1="418" y2="429"/>
<content>0</content>
<instruction instr-id="430" subinstr-id="10"/>
</cell>
<cell id="1" start-col="4" start-row="5">
<bounding-box x1="449" x2="462" y1="418" y2="429"/>
<content>0%</content>
<instruction instr-id="430" subinstr-id="12"/>
</cell>
<cell id="1" start-col="0" start-row="6">
<bounding-box x1="92" x2="113" y1="407" y2="417"/>
<content>Total</content>
<instruction instr-id="457" subinstr-id="0"/>
</cell>
<cell id="1" start-col="1" start-row="6">
<bounding-box x1="209" x2="226" y1="407" y2="417"/>
<content>100</content>
<instruction instr-id="457" subinstr-id="0"/>
</cell>
<cell id="1" start-col="3" start-row="6">
<bounding-box x1="369" x2="380" y1="407" y2="417"/>
<content>22</content>
<instruction instr-id="457" subinstr-id="4"/>
</cell>
</region>
</table>
<table id="3">
<region col-increment="0" id="1" page="1" row-increment="0">
<cell id="1" start-col="1" start-row="0">
<bounding-box x1="164" x2="229" y1="308" y2="373"/>
<content>Reclassification
from Fair value
through profit
and loss to
loans and
receivables</content>
<instruction instr-id="519" subinstr-id="0"/>
<instruction instr-id="519" subinstr-id="2"/>
<instruction instr-id="519" subinstr-id="4"/>
<instruction instr-id="519" subinstr-id="6"/>
<instruction instr-id="523" subinstr-id="0"/>
<instruction instr-id="523" subinstr-id="2"/>
<instruction instr-id="529" subinstr-id="0"/>
<instruction instr-id="529" subinstr-id="2"/>
<instruction instr-id="529" subinstr-id="4"/>
<instruction instr-id="529" subinstr-id="6"/>
<instruction instr-id="529" subinstr-id="8"/>
<instruction instr-id="534" subinstr-id="0"/>
<instruction instr-id="534" subinstr-id="2"/>
<instruction instr-id="534" subinstr-id="4"/>
<instruction instr-id="539" subinstr-id="-1"/>
<instruction instr-id="545" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="0">
<bounding-box x1="239" x2="304" y1="319" y2="373"/>
<content>Reclassification
from Available
for Sale to
loans and
receivables</content>
<instruction instr-id="553" subinstr-id="0"/>
<instruction instr-id="553" subinstr-id="2"/>
<instruction instr-id="558" subinstr-id="0"/>
<instruction instr-id="558" subinstr-id="2"/>
<instruction instr-id="558" subinstr-id="4"/>
<instruction instr-id="563" subinstr-id="0"/>
<instruction instr-id="563" subinstr-id="2"/>
<instruction instr-id="568" subinstr-id="-1"/>
<instruction instr-id="573" subinstr-id="0"/>
<instruction instr-id="573" subinstr-id="2"/>
<instruction instr-id="573" subinstr-id="4"/>
<instruction instr-id="573" subinstr-id="6"/>
<instruction instr-id="573" subinstr-id="8"/>
</cell>
<cell id="1" start-col="3" start-row="0">
<bounding-box x1="314" x2="379" y1="308" y2="373"/>
<content>Reclassification
from Fair value
through profit
and loss to
Available for
sale</content>
<instruction instr-id="580" subinstr-id="-1"/>
<instruction instr-id="585" subinstr-id="0"/>
<instruction instr-id="585" subinstr-id="2"/>
<instruction instr-id="585" subinstr-id="4"/>
<instruction instr-id="585" subinstr-id="6"/>
<instruction instr-id="585" subinstr-id="8"/>
<instruction instr-id="585" subinstr-id="12"/>
<instruction instr-id="585" subinstr-id="14"/>
<instruction instr-id="585" subinstr-id="16"/>
<instruction instr-id="585" subinstr-id="18"/>
<instruction instr-id="590" subinstr-id="0"/>
<instruction instr-id="590" subinstr-id="2"/>
<instruction instr-id="595" subinstr-id="0"/>
<instruction instr-id="595" subinstr-id="2"/>
<instruction instr-id="595" subinstr-id="4"/>
<instruction instr-id="600" subinstr-id="0"/>
<instruction instr-id="600" subinstr-id="2"/>
<instruction instr-id="600" subinstr-id="4"/>
<instruction instr-id="606" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="4" start-row="0">
<bounding-box x1="389" x2="454" y1="308" y2="373"/>
<content>Reclassification
from Fair value
through profit
and loss to
Held to
Maturity</content>
<instruction instr-id="614" subinstr-id="0"/>
<instruction instr-id="614" subinstr-id="2"/>
<instruction instr-id="614" subinstr-id="4"/>
<instruction instr-id="614" subinstr-id="6"/>
<instruction instr-id="619" subinstr-id="0"/>
<instruction instr-id="619" subinstr-id="2"/>
<instruction instr-id="624" subinstr-id="0"/>
<instruction instr-id="624" subinstr-id="2"/>
<instruction instr-id="624" subinstr-id="4"/>
<instruction instr-id="624" subinstr-id="6"/>
<instruction instr-id="624" subinstr-id="8"/>
<instruction instr-id="629" subinstr-id="-1"/>
<instruction instr-id="634" subinstr-id="0"/>
<instruction instr-id="639" subinstr-id="0"/>
<instruction instr-id="639" subinstr-id="2"/>
</cell>
<cell id="1" start-col="5" start-row="0">
<bounding-box x1="464" x2="485" y1="362" y2="373"/>
<content>Total</content>
<instruction instr-id="646" subinstr-id="0"/>
<instruction instr-id="646" subinstr-id="2"/>
<instruction instr-id="646" subinstr-id="4"/>
<instruction instr-id="646" subinstr-id="6"/>
</cell>
<cell id="1" start-col="0" start-row="1">
<bounding-box x1="92" x2="154" y1="231" y2="296"/>
<content>Number of
financial
companies
who applied
the option for
this category</content>
<instruction instr-id="673" subinstr-id="0"/>
<instruction instr-id="673" subinstr-id="2"/>
<instruction instr-id="673" subinstr-id="4"/>
<instruction instr-id="679" subinstr-id="-1"/>
<instruction instr-id="683" subinstr-id="-1"/>
<instruction instr-id="689" subinstr-id="0"/>
<instruction instr-id="695" subinstr-id="0"/>
<instruction instr-id="695" subinstr-id="2"/>
<instruction instr-id="695" subinstr-id="4"/>
<instruction instr-id="695" subinstr-id="6"/>
<instruction instr-id="701" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="1">
<bounding-box x1="164" x2="175" y1="285" y2="296"/>
<content>27</content>
<instruction instr-id="705" subinstr-id="0"/>
</cell>
<cell id="1" start-col="2" start-row="1">
<bounding-box x1="239" x2="250" y1="285" y2="296"/>
<content>16</content>
<instruction instr-id="705" subinstr-id="0"/>
</cell>
<cell id="1" start-col="3" start-row="1">
<bounding-box x1="314" x2="325" y1="285" y2="296"/>
<content>23</content>
<instruction instr-id="705" subinstr-id="2"/>
</cell>
<cell id="1" start-col="4" start-row="1">
<bounding-box x1="389" x2="400" y1="285" y2="296"/>
<content>15</content>
<instruction instr-id="705" subinstr-id="2"/>
</cell>
<cell id="1" start-col="5" start-row="1">
<bounding-box x1="464" x2="475" y1="285" y2="296"/>
<content>81</content>
<instruction instr-id="705" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="2">
<bounding-box x1="92" x2="154" y1="154" y2="230"/>
<content>Percentage of
all financial
companies
analysed who
applied the
option for this
category</content>
<instruction instr-id="728" subinstr-id="0"/>
<instruction instr-id="728" subinstr-id="2"/>
<instruction instr-id="728" subinstr-id="4"/>
<instruction instr-id="728" subinstr-id="6"/>
<instruction instr-id="734" subinstr-id="-1"/>
<instruction instr-id="740" subinstr-id="-1"/>
<instruction instr-id="746" subinstr-id="0"/>
<instruction instr-id="746" subinstr-id="2"/>
<instruction instr-id="752" subinstr-id="0"/>
<instruction instr-id="752" subinstr-id="2"/>
<instruction instr-id="752" subinstr-id="4"/>
<instruction instr-id="758" subinstr-id="0"/>
<instruction instr-id="758" subinstr-id="2"/>
<instruction instr-id="758" subinstr-id="4"/>
<instruction instr-id="758" subinstr-id="6"/>
<instruction instr-id="758" subinstr-id="8"/>
<instruction instr-id="764" subinstr-id="0"/>
<instruction instr-id="764" subinstr-id="2"/>
<instruction instr-id="764" subinstr-id="4"/>
<instruction instr-id="764" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="2">
<bounding-box x1="164" x2="183" y1="219" y2="230"/>
<content>33%</content>
<instruction instr-id="768" subinstr-id="0"/>
</cell>
<cell id="1" start-col="2" start-row="2">
<bounding-box x1="239" x2="258" y1="219" y2="230"/>
<content>20%</content>
<instruction instr-id="768" subinstr-id="0"/>
</cell>
<cell id="1" start-col="3" start-row="2">
<bounding-box x1="314" x2="333" y1="219" y2="230"/>
<content>28%</content>
<instruction instr-id="768" subinstr-id="2"/>
</cell>
<cell id="1" start-col="4" start-row="2">
<bounding-box x1="389" x2="408" y1="219" y2="230"/>
<content>19%</content>
<instruction instr-id="768" subinstr-id="2"/>
</cell>
<cell id="1" start-col="5" start-row="2">
<bounding-box x1="464" x2="489" y1="219" y2="230"/>
<content>100%</content>
<instruction instr-id="768" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="3">
<bounding-box x1="92" x2="154" y1="77" y2="153"/>
<content>Number of
financial
companies
where the
disclosure
requirements
were stricter</content>
<instruction instr-id="791" subinstr-id="0"/>
<instruction instr-id="791" subinstr-id="2"/>
<instruction instr-id="791" subinstr-id="4"/>
<instruction instr-id="797" subinstr-id="-1"/>
<instruction instr-id="801" subinstr-id="-1"/>
<instruction instr-id="807" subinstr-id="0"/>
<instruction instr-id="807" subinstr-id="2"/>
<instruction instr-id="813" subinstr-id="0"/>
<instruction instr-id="813" subinstr-id="2"/>
<instruction instr-id="818" subinstr-id="0"/>
<instruction instr-id="818" subinstr-id="2"/>
<instruction instr-id="823" subinstr-id="0"/>
<instruction instr-id="823" subinstr-id="2"/>
<instruction instr-id="826" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="3">
<bounding-box x1="164" x2="169" y1="142" y2="153"/>
<content>8</content>
<instruction instr-id="834" subinstr-id="0"/>
</cell>
<cell id="1" start-col="2" start-row="3">
<bounding-box x1="239" x2="245" y1="142" y2="153"/>
<content>3</content>
<instruction instr-id="834" subinstr-id="0"/>
</cell>
<cell id="1" start-col="3" start-row="3">
<bounding-box x1="314" x2="320" y1="142" y2="153"/>
<content>6</content>
<instruction instr-id="834" subinstr-id="2"/>
</cell>
<cell id="1" start-col="4" start-row="3">
<bounding-box x1="389" x2="395" y1="142" y2="153"/>
<content>2</content>
<instruction instr-id="834" subinstr-id="2"/>
</cell>
<cell id="1" start-col="5" start-row="3">
<bounding-box x1="464" x2="475" y1="142" y2="153"/>
<content>19</content>
<instruction instr-id="834" subinstr-id="2"/>
</cell>
</region>
</table>
</document>

View File

@ -0,0 +1 @@
{"numExpectedTables":3,"numCorrectlyDetectedTables":3,"numErroneouslyDetectedTables":0,"expectedFailure":false}

View File

@ -0,0 +1 @@
{"numExpectedTables":12,"numCorrectlyDetectedTables":12,"numErroneouslyDetectedTables":0,"expectedFailure":false}

View File

@ -0,0 +1,350 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="competition-entry-region-model.xsd" filename='bm_eu-005-reg.xml'>
<table id='1'>
<region id='1' page='2'>
<instruction instr-id='23'/>
<instruction instr-id='25'/>
<instruction instr-id='57'/>
<instruction instr-id='57' subinstr-id='2'/>
<instruction instr-id='57' subinstr-id='4'/>
<instruction instr-id='59'/>
<instruction instr-id='59' subinstr-id='2'/>
<instruction instr-id='61'/>
<instruction instr-id='61' subinstr-id='2'/>
<instruction instr-id='89'/>
<instruction instr-id='89' subinstr-id='2'/>
<instruction instr-id='89' subinstr-id='4'/>
<instruction instr-id='89' subinstr-id='6'/>
<instruction instr-id='89' subinstr-id='8'/>
<instruction instr-id='89' subinstr-id='10'/>
<instruction instr-id='89' subinstr-id='12'/>
<instruction instr-id='91'/>
<instruction instr-id='91' subinstr-id='2'/>
<instruction instr-id='93'/>
<instruction instr-id='93' subinstr-id='2'/>
<instruction instr-id='121'/>
<instruction instr-id='121' subinstr-id='2'/>
<instruction instr-id='121' subinstr-id='4'/>
<instruction instr-id='121' subinstr-id='6'/>
<instruction instr-id='121' subinstr-id='8'/>
<instruction instr-id='123'/>
<instruction instr-id='123' subinstr-id='2'/>
<instruction instr-id='125'/>
<instruction instr-id='125' subinstr-id='2'/>
<instruction instr-id='153'/>
<instruction instr-id='153' subinstr-id='2'/>
<instruction instr-id='153' subinstr-id='4'/>
<instruction instr-id='153' subinstr-id='6'/>
<instruction instr-id='155'/>
<instruction instr-id='157'/>
<instruction instr-id='185'/>
<instruction instr-id='185' subinstr-id='2'/>
<instruction instr-id='185' subinstr-id='4'/>
<instruction instr-id='185' subinstr-id='6'/>
<instruction instr-id='187'/>
<instruction instr-id='187' subinstr-id='2'/>
<instruction instr-id='189'/>
<instruction instr-id='189' subinstr-id='2'/>
<instruction instr-id='217'/>
<instruction instr-id='217' subinstr-id='2'/>
<instruction instr-id='217' subinstr-id='4'/>
<instruction instr-id='217' subinstr-id='6'/>
<instruction instr-id='217' subinstr-id='8'/>
<instruction instr-id='217' subinstr-id='10'/>
<instruction instr-id='219'/>
<instruction instr-id='219' subinstr-id='2'/>
<instruction instr-id='221'/>
<instruction instr-id='221' subinstr-id='2'/>
<instruction instr-id='249'/>
<instruction instr-id='249' subinstr-id='2'/>
<instruction instr-id='249' subinstr-id='4'/>
<instruction instr-id='251'/>
<instruction instr-id='251' subinstr-id='2'/>
<instruction instr-id='253'/>
<instruction instr-id='253' subinstr-id='2'/>
<instruction instr-id='280'/>
<instruction instr-id='280' subinstr-id='2'/>
<instruction instr-id='280' subinstr-id='4'/>
<instruction instr-id='280' subinstr-id='6'/>
<instruction instr-id='282'/>
<instruction instr-id='282' subinstr-id='2'/>
<instruction instr-id='284'/>
<instruction instr-id='284' subinstr-id='2'/>
<instruction instr-id='312'/>
<instruction instr-id='312' subinstr-id='2'/>
<instruction instr-id='312' subinstr-id='4'/>
<instruction instr-id='312' subinstr-id='6'/>
<instruction instr-id='314'/>
<instruction instr-id='314' subinstr-id='2'/>
<instruction instr-id='316'/>
<instruction instr-id='316' subinstr-id='2'/>
<instruction instr-id='344'/>
<instruction instr-id='344' subinstr-id='2'/>
<instruction instr-id='344' subinstr-id='4'/>
<instruction instr-id='344' subinstr-id='6'/>
<instruction instr-id='344' subinstr-id='8'/>
<instruction instr-id='344' subinstr-id='10'/>
<instruction instr-id='344' subinstr-id='12'/>
<instruction instr-id='346'/>
<instruction instr-id='348'/>
<instruction instr-id='376'/>
<instruction instr-id='376' subinstr-id='2'/>
<instruction instr-id='376' subinstr-id='4'/>
<instruction instr-id='376' subinstr-id='6'/>
<instruction instr-id='378'/>
<instruction instr-id='378' subinstr-id='2'/>
<instruction instr-id='380'/>
<instruction instr-id='380' subinstr-id='2'/>
<instruction instr-id='408'/>
<instruction instr-id='408' subinstr-id='2'/>
<instruction instr-id='408' subinstr-id='4'/>
<instruction instr-id='410'/>
<instruction instr-id='412'/>
<instruction instr-id='440'/>
<instruction instr-id='440' subinstr-id='2'/>
<instruction instr-id='440' subinstr-id='4'/>
<instruction instr-id='440' subinstr-id='6'/>
<instruction instr-id='442'/>
<instruction instr-id='442' subinstr-id='2'/>
<instruction instr-id='444'/>
<instruction instr-id='444' subinstr-id='2'/>
<instruction instr-id='472'/>
<instruction instr-id='474'/>
<instruction instr-id='476'/>
<bounding-box x1='121' y1='502' x2='418' y2='703'/>
</region>
</table>
<table id='2'>
<region id='1' page='2'>
<instruction instr-id='519'/>
<instruction instr-id='519' subinstr-id='2'/>
<instruction instr-id='519' subinstr-id='4'/>
<instruction instr-id='519' subinstr-id='6'/>
<instruction instr-id='519' subinstr-id='8'/>
<instruction instr-id='519' subinstr-id='10'/>
<instruction instr-id='522'/>
<instruction instr-id='525'/>
<instruction instr-id='528'/>
<instruction instr-id='531'/>
<instruction instr-id='534'/>
<instruction instr-id='537'/>
<instruction instr-id='540'/>
<instruction instr-id='543'/>
<instruction instr-id='543' subinstr-id='2'/>
<instruction instr-id='546'/>
<instruction instr-id='550'/>
<instruction instr-id='550' subinstr-id='2'/>
<instruction instr-id='550' subinstr-id='4'/>
<instruction instr-id='550' subinstr-id='6'/>
<instruction instr-id='550' subinstr-id='8'/>
<instruction instr-id='550' subinstr-id='10'/>
<instruction instr-id='550' subinstr-id='12'/>
<instruction instr-id='550' subinstr-id='14'/>
<instruction instr-id='550' subinstr-id='16'/>
<instruction instr-id='554'/>
<instruction instr-id='554' subinstr-id='2'/>
<instruction instr-id='554' subinstr-id='4'/>
<instruction instr-id='554' subinstr-id='6'/>
<instruction instr-id='554' subinstr-id='8'/>
<instruction instr-id='554' subinstr-id='10'/>
<instruction instr-id='554' subinstr-id='12'/>
<instruction instr-id='622'/>
<instruction instr-id='622' subinstr-id='2'/>
<instruction instr-id='622' subinstr-id='4'/>
<instruction instr-id='622' subinstr-id='6'/>
<instruction instr-id='622' subinstr-id='8'/>
<instruction instr-id='622' subinstr-id='10'/>
<instruction instr-id='622' subinstr-id='12'/>
<instruction instr-id='622' subinstr-id='14'/>
<instruction instr-id='622' subinstr-id='16'/>
<instruction instr-id='622' subinstr-id='18'/>
<instruction instr-id='622' subinstr-id='20'/>
<instruction instr-id='622' subinstr-id='22'/>
<instruction instr-id='622' subinstr-id='24'/>
<instruction instr-id='622' subinstr-id='26'/>
<instruction instr-id='622' subinstr-id='28'/>
<instruction instr-id='622' subinstr-id='30'/>
<instruction instr-id='622' subinstr-id='32'/>
<instruction instr-id='624'/>
<instruction instr-id='624' subinstr-id='2'/>
<instruction instr-id='624' subinstr-id='4'/>
<instruction instr-id='624' subinstr-id='6'/>
<instruction instr-id='688'/>
<instruction instr-id='688' subinstr-id='2'/>
<instruction instr-id='688' subinstr-id='4'/>
<instruction instr-id='688' subinstr-id='6'/>
<instruction instr-id='688' subinstr-id='8'/>
<instruction instr-id='688' subinstr-id='10'/>
<instruction instr-id='688' subinstr-id='12'/>
<instruction instr-id='688' subinstr-id='14'/>
<instruction instr-id='688' subinstr-id='16'/>
<instruction instr-id='688' subinstr-id='18'/>
<instruction instr-id='688' subinstr-id='20'/>
<instruction instr-id='688' subinstr-id='22'/>
<instruction instr-id='688' subinstr-id='24'/>
<instruction instr-id='688' subinstr-id='26'/>
<instruction instr-id='690'/>
<instruction instr-id='753'/>
<instruction instr-id='753' subinstr-id='2'/>
<instruction instr-id='753' subinstr-id='4'/>
<instruction instr-id='753' subinstr-id='6'/>
<instruction instr-id='753' subinstr-id='8'/>
<instruction instr-id='753' subinstr-id='10'/>
<instruction instr-id='755'/>
<instruction instr-id='755' subinstr-id='2'/>
<instruction instr-id='757'/>
<instruction instr-id='757' subinstr-id='2'/>
<instruction instr-id='759'/>
<instruction instr-id='822'/>
<instruction instr-id='822' subinstr-id='2'/>
<instruction instr-id='822' subinstr-id='4'/>
<instruction instr-id='822' subinstr-id='6'/>
<instruction instr-id='822' subinstr-id='8'/>
<instruction instr-id='822' subinstr-id='10'/>
<instruction instr-id='822' subinstr-id='12'/>
<instruction instr-id='822' subinstr-id='14'/>
<instruction instr-id='822' subinstr-id='16'/>
<instruction instr-id='822' subinstr-id='18'/>
<instruction instr-id='824'/>
<instruction instr-id='887'/>
<instruction instr-id='887' subinstr-id='2'/>
<instruction instr-id='887' subinstr-id='4'/>
<instruction instr-id='887' subinstr-id='6'/>
<instruction instr-id='887' subinstr-id='8'/>
<instruction instr-id='889'/>
<instruction instr-id='889' subinstr-id='2'/>
<instruction instr-id='889' subinstr-id='4'/>
<instruction instr-id='891'/>
<instruction instr-id='891' subinstr-id='2'/>
<instruction instr-id='891' subinstr-id='4'/>
<instruction instr-id='891' subinstr-id='6'/>
<instruction instr-id='893'/>
<instruction instr-id='956'/>
<instruction instr-id='956' subinstr-id='2'/>
<instruction instr-id='956' subinstr-id='4'/>
<instruction instr-id='956' subinstr-id='6'/>
<instruction instr-id='956' subinstr-id='8'/>
<instruction instr-id='956' subinstr-id='10'/>
<instruction instr-id='956' subinstr-id='12'/>
<instruction instr-id='956' subinstr-id='14'/>
<instruction instr-id='956' subinstr-id='16'/>
<instruction instr-id='956' subinstr-id='18'/>
<instruction instr-id='956' subinstr-id='20'/>
<instruction instr-id='956' subinstr-id='22'/>
<instruction instr-id='958'/>
<instruction instr-id='1022'/>
<instruction instr-id='1022' subinstr-id='2'/>
<instruction instr-id='1022' subinstr-id='4'/>
<instruction instr-id='1024'/>
<instruction instr-id='1024' subinstr-id='2'/>
<instruction instr-id='1024' subinstr-id='4'/>
<instruction instr-id='1024' subinstr-id='6'/>
<instruction instr-id='1026'/>
<instruction instr-id='1026' subinstr-id='2'/>
<instruction instr-id='1026' subinstr-id='4'/>
<instruction instr-id='1026' subinstr-id='6'/>
<instruction instr-id='1028'/>
<instruction instr-id='1028' subinstr-id='2'/>
<instruction instr-id='1028' subinstr-id='4'/>
<instruction instr-id='1028' subinstr-id='6'/>
<instruction instr-id='1092'/>
<instruction instr-id='1092' subinstr-id='2'/>
<instruction instr-id='1092' subinstr-id='4'/>
<instruction instr-id='1092' subinstr-id='6'/>
<instruction instr-id='1092' subinstr-id='8'/>
<instruction instr-id='1092' subinstr-id='10'/>
<instruction instr-id='1092' subinstr-id='12'/>
<instruction instr-id='1094'/>
<instruction instr-id='1094' subinstr-id='2'/>
<instruction instr-id='1094' subinstr-id='4'/>
<instruction instr-id='1094' subinstr-id='6'/>
<instruction instr-id='1096'/>
<instruction instr-id='1159'/>
<instruction instr-id='1159' subinstr-id='2'/>
<instruction instr-id='1159' subinstr-id='4'/>
<instruction instr-id='1159' subinstr-id='6'/>
<instruction instr-id='1159' subinstr-id='8'/>
<instruction instr-id='1161'/>
<instruction instr-id='1161' subinstr-id='2'/>
<instruction instr-id='1161' subinstr-id='4'/>
<instruction instr-id='1161' subinstr-id='6'/>
<instruction instr-id='1161' subinstr-id='8'/>
<instruction instr-id='1163'/>
<instruction instr-id='1163' subinstr-id='2'/>
<instruction instr-id='1163' subinstr-id='4'/>
<instruction instr-id='1163' subinstr-id='6'/>
<instruction instr-id='1226'/>
<instruction instr-id='1226' subinstr-id='2'/>
<instruction instr-id='1226' subinstr-id='4'/>
<instruction instr-id='1226' subinstr-id='6'/>
<instruction instr-id='1226' subinstr-id='8'/>
<instruction instr-id='1226' subinstr-id='10'/>
<instruction instr-id='1226' subinstr-id='12'/>
<instruction instr-id='1226' subinstr-id='14'/>
<instruction instr-id='1226' subinstr-id='16'/>
<instruction instr-id='1226' subinstr-id='18'/>
<instruction instr-id='1226' subinstr-id='20'/>
<instruction instr-id='1226' subinstr-id='22'/>
<instruction instr-id='1226' subinstr-id='24'/>
<instruction instr-id='1226' subinstr-id='26'/>
<instruction instr-id='1226' subinstr-id='28'/>
<instruction instr-id='1228'/>
<instruction instr-id='1291'/>
<instruction instr-id='1291' subinstr-id='2'/>
<instruction instr-id='1291' subinstr-id='4'/>
<instruction instr-id='1291' subinstr-id='6'/>
<instruction instr-id='1291' subinstr-id='8'/>
<instruction instr-id='1291' subinstr-id='10'/>
<instruction instr-id='1291' subinstr-id='12'/>
<instruction instr-id='1291' subinstr-id='14'/>
<instruction instr-id='1291' subinstr-id='16'/>
<instruction instr-id='1291' subinstr-id='18'/>
<instruction instr-id='1291' subinstr-id='20'/>
<instruction instr-id='1293'/>
<instruction instr-id='1293' subinstr-id='2'/>
<instruction instr-id='1293' subinstr-id='4'/>
<instruction instr-id='1356'/>
<instruction instr-id='1356' subinstr-id='2'/>
<instruction instr-id='1356' subinstr-id='4'/>
<instruction instr-id='1358'/>
<instruction instr-id='1358' subinstr-id='2'/>
<instruction instr-id='1358' subinstr-id='4'/>
<instruction instr-id='1358' subinstr-id='6'/>
<instruction instr-id='1360'/>
<instruction instr-id='1360' subinstr-id='2'/>
<instruction instr-id='1362'/>
<instruction instr-id='1362' subinstr-id='2'/>
<instruction instr-id='1425'/>
<instruction instr-id='1425' subinstr-id='2'/>
<instruction instr-id='1425' subinstr-id='4'/>
<instruction instr-id='1425' subinstr-id='6'/>
<instruction instr-id='1425' subinstr-id='8'/>
<instruction instr-id='1425' subinstr-id='10'/>
<instruction instr-id='1425' subinstr-id='12'/>
<instruction instr-id='1425' subinstr-id='14'/>
<instruction instr-id='1425' subinstr-id='16'/>
<instruction instr-id='1425' subinstr-id='18'/>
<instruction instr-id='1427'/>
<instruction instr-id='1490'/>
<instruction instr-id='1492'/>
<instruction instr-id='1492' subinstr-id='2'/>
<instruction instr-id='1492' subinstr-id='4'/>
<instruction instr-id='1492' subinstr-id='6'/>
<instruction instr-id='1494'/>
<instruction instr-id='1494' subinstr-id='2'/>
<instruction instr-id='1494' subinstr-id='4'/>
<instruction instr-id='1494' subinstr-id='6'/>
<instruction instr-id='1496'/>
<instruction instr-id='1559'/>
<instruction instr-id='1559' subinstr-id='2'/>
<instruction instr-id='1559' subinstr-id='4'/>
<instruction instr-id='1559' subinstr-id='6'/>
<instruction instr-id='1559' subinstr-id='8'/>
<instruction instr-id='1559' subinstr-id='10'/>
<instruction instr-id='1559' subinstr-id='12'/>
<instruction instr-id='1561'/>
<bounding-box x1='73' y1='244' x2='522' y2='471'/>
</region>
</table>
</document>

View File

@ -0,0 +1,926 @@
<?xml version="1.0" encoding="UTF-8"?>
<document filename="bm_eu-005-str.xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="competition-entry-structure-model.xsd">
<table id="1">
<region col-increment="0" id="1" page="2" row-increment="0">
<cell id="1" start-col="1" start-row="0">
<bounding-box x1="269" x2="291" y1="692" y2="703"/>
<content>1996</content>
<instruction instr-id="23" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="0">
<bounding-box x1="396" x2="418" y1="692" y2="703"/>
<content>1993</content>
<instruction instr-id="25" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="1">
<bounding-box x1="121" x2="153" y1="678" y2="689"/>
<content>Austria</content>
<instruction instr-id="57" subinstr-id="0"/>
<instruction instr-id="57" subinstr-id="2"/>
<instruction instr-id="57" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="1">
<bounding-box x1="275" x2="285" y1="678" y2="689"/>
<content>59</content>
<instruction instr-id="59" subinstr-id="0"/>
<instruction instr-id="59" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="1">
<bounding-box x1="402" x2="413" y1="678" y2="689"/>
<content>54</content>
<instruction instr-id="61" subinstr-id="0"/>
<instruction instr-id="61" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="2">
<bounding-box x1="121" x2="179" y1="665" y2="676"/>
<content>Belgium/Lux</content>
<instruction instr-id="89" subinstr-id="0"/>
<instruction instr-id="89" subinstr-id="2"/>
<instruction instr-id="89" subinstr-id="4"/>
<instruction instr-id="89" subinstr-id="6"/>
<instruction instr-id="89" subinstr-id="8"/>
<instruction instr-id="89" subinstr-id="10"/>
<instruction instr-id="89" subinstr-id="12"/>
</cell>
<cell id="1" start-col="1" start-row="2">
<bounding-box x1="274" x2="285" y1="665" y2="676"/>
<content>62</content>
<instruction instr-id="91" subinstr-id="0"/>
<instruction instr-id="91" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="2">
<bounding-box x1="402" x2="413" y1="665" y2="676"/>
<content>60</content>
<instruction instr-id="93" subinstr-id="0"/>
<instruction instr-id="93" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="3">
<bounding-box x1="121" x2="161" y1="651" y2="662"/>
<content>Denmark</content>
<instruction instr-id="121" subinstr-id="0"/>
<instruction instr-id="121" subinstr-id="2"/>
<instruction instr-id="121" subinstr-id="4"/>
<instruction instr-id="121" subinstr-id="6"/>
<instruction instr-id="121" subinstr-id="8"/>
</cell>
<cell id="1" start-col="1" start-row="3">
<bounding-box x1="275" x2="285" y1="651" y2="662"/>
<content>59</content>
<instruction instr-id="123" subinstr-id="0"/>
<instruction instr-id="123" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="3">
<bounding-box x1="402" x2="413" y1="651" y2="662"/>
<content>54</content>
<instruction instr-id="125" subinstr-id="0"/>
<instruction instr-id="125" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="4">
<bounding-box x1="121" x2="154" y1="638" y2="649"/>
<content>Finland</content>
<instruction instr-id="153" subinstr-id="0"/>
<instruction instr-id="153" subinstr-id="2"/>
<instruction instr-id="153" subinstr-id="4"/>
<instruction instr-id="153" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="4">
<bounding-box x1="275" x2="285" y1="638" y2="649"/>
<content>89</content>
<instruction instr-id="155" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="4">
<bounding-box x1="402" x2="413" y1="638" y2="649"/>
<content>94</content>
<instruction instr-id="157" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="5">
<bounding-box x1="121" x2="150" y1="624" y2="635"/>
<content>France</content>
<instruction instr-id="185" subinstr-id="0"/>
<instruction instr-id="185" subinstr-id="2"/>
<instruction instr-id="185" subinstr-id="4"/>
<instruction instr-id="185" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="5">
<bounding-box x1="275" x2="285" y1="624" y2="635"/>
<content>51</content>
<instruction instr-id="187" subinstr-id="0"/>
<instruction instr-id="187" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="5">
<bounding-box x1="402" x2="413" y1="624" y2="635"/>
<content>48</content>
<instruction instr-id="189" subinstr-id="0"/>
<instruction instr-id="189" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="6">
<bounding-box x1="121" x2="161" y1="611" y2="622"/>
<content>Germany</content>
<instruction instr-id="217" subinstr-id="0"/>
<instruction instr-id="217" subinstr-id="2"/>
<instruction instr-id="217" subinstr-id="4"/>
<instruction instr-id="217" subinstr-id="6"/>
<instruction instr-id="217" subinstr-id="8"/>
<instruction instr-id="217" subinstr-id="10"/>
</cell>
<cell id="1" start-col="1" start-row="6">
<bounding-box x1="275" x2="285" y1="611" y2="622"/>
<content>45</content>
<instruction instr-id="219" subinstr-id="0"/>
<instruction instr-id="219" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="6">
<bounding-box x1="402" x2="413" y1="611" y2="622"/>
<content>45</content>
<instruction instr-id="221" subinstr-id="0"/>
<instruction instr-id="221" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="7">
<bounding-box x1="121" x2="152" y1="597" y2="608"/>
<content>Greece</content>
<instruction instr-id="249" subinstr-id="0"/>
<instruction instr-id="249" subinstr-id="2"/>
<instruction instr-id="249" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="7">
<bounding-box x1="275" x2="285" y1="597" y2="608"/>
<content>28</content>
<instruction instr-id="251" subinstr-id="0"/>
<instruction instr-id="251" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="7">
<bounding-box x1="402" x2="413" y1="597" y2="608"/>
<content>11</content>
<instruction instr-id="253" subinstr-id="0"/>
<instruction instr-id="253" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="8">
<bounding-box x1="121" x2="151" y1="584" y2="594"/>
<content>Ireland</content>
<instruction instr-id="280" subinstr-id="0"/>
<instruction instr-id="280" subinstr-id="2"/>
<instruction instr-id="280" subinstr-id="4"/>
<instruction instr-id="280" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="8">
<bounding-box x1="275" x2="285" y1="584" y2="594"/>
<content>64</content>
<instruction instr-id="282" subinstr-id="0"/>
<instruction instr-id="282" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="8">
<bounding-box x1="402" x2="413" y1="584" y2="594"/>
<content>62</content>
<instruction instr-id="284" subinstr-id="0"/>
<instruction instr-id="284" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="9">
<bounding-box x1="121" x2="141" y1="570" y2="581"/>
<content>Italy</content>
<instruction instr-id="312" subinstr-id="0"/>
<instruction instr-id="312" subinstr-id="2"/>
<instruction instr-id="312" subinstr-id="4"/>
<instruction instr-id="312" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="9">
<bounding-box x1="275" x2="285" y1="570" y2="581"/>
<content>12</content>
<instruction instr-id="314" subinstr-id="0"/>
<instruction instr-id="314" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="9">
<bounding-box x1="402" x2="413" y1="570" y2="581"/>
<content>11</content>
<instruction instr-id="316" subinstr-id="0"/>
<instruction instr-id="316" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="10">
<bounding-box x1="121" x2="174" y1="556" y2="567"/>
<content>Netherlands</content>
<instruction instr-id="344" subinstr-id="0"/>
<instruction instr-id="344" subinstr-id="2"/>
<instruction instr-id="344" subinstr-id="4"/>
<instruction instr-id="344" subinstr-id="6"/>
<instruction instr-id="344" subinstr-id="8"/>
<instruction instr-id="344" subinstr-id="10"/>
<instruction instr-id="344" subinstr-id="12"/>
</cell>
<cell id="1" start-col="1" start-row="10">
<bounding-box x1="275" x2="286" y1="556" y2="567"/>
<content>50</content>
<instruction instr-id="346" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="10">
<bounding-box x1="402" x2="413" y1="556" y2="567"/>
<content>52</content>
<instruction instr-id="348" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="11">
<bounding-box x1="121" x2="158" y1="543" y2="554"/>
<content>Portugal</content>
<instruction instr-id="376" subinstr-id="0"/>
<instruction instr-id="376" subinstr-id="2"/>
<instruction instr-id="376" subinstr-id="4"/>
<instruction instr-id="376" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="11">
<bounding-box x1="275" x2="285" y1="543" y2="554"/>
<content>56</content>
<instruction instr-id="378" subinstr-id="0"/>
<instruction instr-id="378" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="11">
<bounding-box x1="402" x2="413" y1="543" y2="554"/>
<content>36</content>
<instruction instr-id="380" subinstr-id="0"/>
<instruction instr-id="380" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="12">
<bounding-box x1="121" x2="146" y1="529" y2="540"/>
<content>Spain</content>
<instruction instr-id="408" subinstr-id="0"/>
<instruction instr-id="408" subinstr-id="2"/>
<instruction instr-id="408" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="12">
<bounding-box x1="275" x2="285" y1="529" y2="540"/>
<content>32</content>
<instruction instr-id="410" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="12">
<bounding-box x1="402" x2="413" y1="529" y2="540"/>
<content>22</content>
<instruction instr-id="412" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="13">
<bounding-box x1="121" x2="155" y1="516" y2="527"/>
<content>Sweden</content>
<instruction instr-id="440" subinstr-id="0"/>
<instruction instr-id="440" subinstr-id="2"/>
<instruction instr-id="440" subinstr-id="4"/>
<instruction instr-id="440" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="13">
<bounding-box x1="275" x2="285" y1="516" y2="527"/>
<content>78</content>
<instruction instr-id="442" subinstr-id="0"/>
<instruction instr-id="442" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="13">
<bounding-box x1="402" x2="413" y1="516" y2="527"/>
<content>79</content>
<instruction instr-id="444" subinstr-id="0"/>
<instruction instr-id="444" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="14">
<bounding-box x1="121" x2="137" y1="502" y2="513"/>
<content>UK</content>
<instruction instr-id="472" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="14">
<bounding-box x1="275" x2="285" y1="502" y2="513"/>
<content>56</content>
<instruction instr-id="474" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="14">
<bounding-box x1="402" x2="413" y1="502" y2="513"/>
<content>50</content>
<instruction instr-id="476" subinstr-id="-1"/>
</cell>
</region>
</table>
<table id="2">
<region col-increment="0" id="1" page="2" row-increment="0">
<cell id="1" start-col="1" start-row="0">
<bounding-box x1="136" x2="202" y1="447" y2="471"/>
<content>Our estimates
1996</content>
<instruction instr-id="519" subinstr-id="0"/>
<instruction instr-id="519" subinstr-id="2"/>
<instruction instr-id="519" subinstr-id="4"/>
<instruction instr-id="519" subinstr-id="6"/>
<instruction instr-id="519" subinstr-id="8"/>
<instruction instr-id="519" subinstr-id="10"/>
<instruction instr-id="522" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="0">
<bounding-box x1="214" x2="237" y1="447" y2="471"/>
<content>LDA
1997</content>
<instruction instr-id="525" subinstr-id="-1"/>
<instruction instr-id="528" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="0">
<bounding-box x1="252" x2="283" y1="447" y2="471"/>
<content>PBUK
1996</content>
<instruction instr-id="531" subinstr-id="-1"/>
<instruction instr-id="534" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="4" start-row="0">
<bounding-box x1="295" x2="317" y1="447" y2="471"/>
<content>EH
1996</content>
<instruction instr-id="537" subinstr-id="-1"/>
<instruction instr-id="540" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="5" start-row="0">
<bounding-box x1="333" x2="355" y1="447" y2="471"/>
<content>AIM
1992</content>
<instruction instr-id="543" subinstr-id="0"/>
<instruction instr-id="543" subinstr-id="2"/>
<instruction instr-id="546" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="6" start-row="0">
<bounding-box x1="371" x2="393" y1="460" y2="471"/>
<content>HBS</content>
<instruction instr-id="550" subinstr-id="0"/>
</cell>
<cell id="1" start-col="7" start-row="0">
<bounding-box x1="404" x2="443" y1="460" y2="471"/>
<content>OXIRM</content>
<instruction instr-id="550" subinstr-id="2"/>
<instruction instr-id="550" subinstr-id="4"/>
<instruction instr-id="550" subinstr-id="6"/>
<instruction instr-id="550" subinstr-id="8"/>
</cell>
<cell id="1" start-col="8" start-row="0">
<bounding-box x1="451" x2="522" y1="447" y2="471"/>
<content>Average of
other estimates</content>
<instruction instr-id="550" subinstr-id="10"/>
<instruction instr-id="550" subinstr-id="12"/>
<instruction instr-id="550" subinstr-id="14"/>
<instruction instr-id="550" subinstr-id="16"/>
<instruction instr-id="554" subinstr-id="0"/>
<instruction instr-id="554" subinstr-id="2"/>
<instruction instr-id="554" subinstr-id="4"/>
<instruction instr-id="554" subinstr-id="6"/>
<instruction instr-id="554" subinstr-id="8"/>
<instruction instr-id="554" subinstr-id="10"/>
<instruction instr-id="554" subinstr-id="12"/>
</cell>
<cell id="1" start-col="0" start-row="1">
<bounding-box x1="73" x2="105" y1="434" y2="444"/>
<content>Austria</content>
<instruction instr-id="622" subinstr-id="0"/>
<instruction instr-id="622" subinstr-id="2"/>
<instruction instr-id="622" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="1">
<bounding-box x1="159" x2="179" y1="434" y2="444"/>
<content>58.6</content>
<instruction instr-id="622" subinstr-id="6"/>
<instruction instr-id="622" subinstr-id="8"/>
<instruction instr-id="622" subinstr-id="10"/>
<instruction instr-id="622" subinstr-id="12"/>
</cell>
<cell id="1" start-col="2" start-row="1">
<bounding-box x1="220" x2="231" y1="434" y2="444"/>
<content>79</content>
<instruction instr-id="622" subinstr-id="14"/>
<instruction instr-id="622" subinstr-id="16"/>
</cell>
<cell id="1" start-col="3" start-row="1">
<bounding-box x1="258" x2="277" y1="434" y2="444"/>
<content>67.9</content>
<instruction instr-id="622" subinstr-id="18"/>
<instruction instr-id="622" subinstr-id="20"/>
<instruction instr-id="622" subinstr-id="22"/>
<instruction instr-id="622" subinstr-id="24"/>
</cell>
<cell id="1" start-col="4" start-row="1">
<bounding-box x1="296" x2="315" y1="434" y2="444"/>
<content>72.9</content>
<instruction instr-id="622" subinstr-id="26"/>
<instruction instr-id="622" subinstr-id="28"/>
<instruction instr-id="622" subinstr-id="30"/>
<instruction instr-id="622" subinstr-id="32"/>
</cell>
<cell id="1" start-col="8" start-row="1">
<bounding-box x1="477" x2="496" y1="434" y2="444"/>
<content>73.3</content>
<instruction instr-id="624" subinstr-id="0"/>
<instruction instr-id="624" subinstr-id="2"/>
<instruction instr-id="624" subinstr-id="4"/>
<instruction instr-id="624" subinstr-id="6"/>
</cell>
<cell id="1" start-col="0" start-row="2">
<bounding-box x1="73" x2="109" y1="420" y2="431"/>
<content>Bel/Lux</content>
<instruction instr-id="688" subinstr-id="0"/>
<instruction instr-id="688" subinstr-id="2"/>
<instruction instr-id="688" subinstr-id="4"/>
<instruction instr-id="688" subinstr-id="6"/>
<instruction instr-id="688" subinstr-id="8"/>
</cell>
<cell id="1" start-col="1" start-row="2">
<bounding-box x1="159" x2="179" y1="420" y2="431"/>
<content>61.6</content>
<instruction instr-id="688" subinstr-id="10"/>
</cell>
<cell id="1" start-col="2" start-row="2">
<bounding-box x1="220" x2="231" y1="420" y2="431"/>
<content>57</content>
<instruction instr-id="688" subinstr-id="12"/>
<instruction instr-id="688" subinstr-id="14"/>
</cell>
<cell id="1" start-col="3" start-row="2">
<bounding-box x1="258" x2="277" y1="420" y2="431"/>
<content>56.9</content>
<instruction instr-id="688" subinstr-id="16"/>
</cell>
<cell id="1" start-col="4" start-row="2">
<bounding-box x1="296" x2="315" y1="420" y2="431"/>
<content>77.4</content>
<instruction instr-id="688" subinstr-id="18"/>
</cell>
<cell id="1" start-col="5" start-row="2">
<bounding-box x1="338" x2="349" y1="420" y2="431"/>
<content>53</content>
<instruction instr-id="688" subinstr-id="20"/>
<instruction instr-id="688" subinstr-id="22"/>
</cell>
<cell id="1" start-col="6" start-row="2">
<bounding-box x1="376" x2="387" y1="420" y2="431"/>
<content>60</content>
<instruction instr-id="688" subinstr-id="24"/>
<instruction instr-id="688" subinstr-id="26"/>
</cell>
<cell id="1" start-col="8" start-row="2">
<bounding-box x1="477" x2="496" y1="420" y2="431"/>
<content>60.9</content>
<instruction instr-id="690" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="3">
<bounding-box x1="73" x2="114" y1="406" y2="417"/>
<content>Denmark</content>
<instruction instr-id="753" subinstr-id="0"/>
<instruction instr-id="753" subinstr-id="2"/>
<instruction instr-id="753" subinstr-id="4"/>
<instruction instr-id="753" subinstr-id="6"/>
<instruction instr-id="753" subinstr-id="8"/>
</cell>
<cell id="1" start-col="1" start-row="3">
<bounding-box x1="159" x2="179" y1="406" y2="417"/>
<content>59.5</content>
<instruction instr-id="753" subinstr-id="10"/>
</cell>
<cell id="1" start-col="3" start-row="3">
<bounding-box x1="262" x2="273" y1="406" y2="417"/>
<content>48</content>
<instruction instr-id="755" subinstr-id="0"/>
<instruction instr-id="755" subinstr-id="2"/>
</cell>
<cell id="1" start-col="6" start-row="3">
<bounding-box x1="376" x2="387" y1="406" y2="417"/>
<content>78</content>
<instruction instr-id="757" subinstr-id="0"/>
<instruction instr-id="757" subinstr-id="2"/>
</cell>
<cell id="1" start-col="8" start-row="3">
<bounding-box x1="477" x2="496" y1="406" y2="417"/>
<content>63.0</content>
<instruction instr-id="759" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="4">
<bounding-box x1="73" x2="106" y1="393" y2="404"/>
<content>Finland</content>
<instruction instr-id="822" subinstr-id="0"/>
<instruction instr-id="822" subinstr-id="2"/>
<instruction instr-id="822" subinstr-id="4"/>
<instruction instr-id="822" subinstr-id="6"/>
<instruction instr-id="822" subinstr-id="8"/>
</cell>
<cell id="1" start-col="1" start-row="4">
<bounding-box x1="159" x2="179" y1="393" y2="404"/>
<content>89.1</content>
<instruction instr-id="822" subinstr-id="10"/>
</cell>
<cell id="1" start-col="2" start-row="4">
<bounding-box x1="220" x2="231" y1="393" y2="404"/>
<content>96</content>
<instruction instr-id="822" subinstr-id="12"/>
<instruction instr-id="822" subinstr-id="14"/>
</cell>
<cell id="1" start-col="3" start-row="4">
<bounding-box x1="258" x2="277" y1="393" y2="404"/>
<content>95.4</content>
<instruction instr-id="822" subinstr-id="16"/>
</cell>
<cell id="1" start-col="4" start-row="4">
<bounding-box x1="296" x2="315" y1="393" y2="404"/>
<content>97.5</content>
<instruction instr-id="822" subinstr-id="18"/>
</cell>
<cell id="1" start-col="8" start-row="4">
<bounding-box x1="477" x2="496" y1="393" y2="404"/>
<content>96.3</content>
<instruction instr-id="824" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="5">
<bounding-box x1="73" x2="103" y1="379" y2="390"/>
<content>France</content>
<instruction instr-id="887" subinstr-id="0"/>
<instruction instr-id="887" subinstr-id="2"/>
<instruction instr-id="887" subinstr-id="4"/>
<instruction instr-id="887" subinstr-id="6"/>
<instruction instr-id="887" subinstr-id="8"/>
</cell>
<cell id="1" start-col="1" start-row="5">
<bounding-box x1="159" x2="179" y1="379" y2="390"/>
<content>50.6</content>
<instruction instr-id="889" subinstr-id="0"/>
</cell>
<cell id="1" start-col="2" start-row="5">
<bounding-box x1="215" x2="235" y1="379" y2="390"/>
<content>67.2</content>
<instruction instr-id="889" subinstr-id="2"/>
</cell>
<cell id="1" start-col="3" start-row="5">
<bounding-box x1="258" x2="277" y1="379" y2="390"/>
<content>60.1</content>
<instruction instr-id="889" subinstr-id="4"/>
</cell>
<cell id="1" start-col="5" start-row="5">
<bounding-box x1="338" x2="349" y1="379" y2="390"/>
<content>49</content>
<instruction instr-id="891" subinstr-id="0"/>
<instruction instr-id="891" subinstr-id="2"/>
</cell>
<cell id="1" start-col="6" start-row="5">
<bounding-box x1="376" x2="387" y1="379" y2="390"/>
<content>65</content>
<instruction instr-id="891" subinstr-id="4"/>
<instruction instr-id="891" subinstr-id="6"/>
</cell>
<cell id="1" start-col="8" start-row="5">
<bounding-box x1="477" x2="496" y1="379" y2="390"/>
<content>60.3</content>
<instruction instr-id="893" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="6">
<bounding-box x1="73" x2="114" y1="366" y2="377"/>
<content>Germany</content>
<instruction instr-id="956" subinstr-id="0"/>
<instruction instr-id="956" subinstr-id="2"/>
<instruction instr-id="956" subinstr-id="4"/>
<instruction instr-id="956" subinstr-id="6"/>
<instruction instr-id="956" subinstr-id="8"/>
<instruction instr-id="956" subinstr-id="10"/>
</cell>
<cell id="1" start-col="1" start-row="6">
<bounding-box x1="159" x2="179" y1="366" y2="377"/>
<content>45.4</content>
<instruction instr-id="956" subinstr-id="12"/>
</cell>
<cell id="1" start-col="2" start-row="6">
<bounding-box x1="215" x2="235" y1="366" y2="377"/>
<content>75.2</content>
<instruction instr-id="956" subinstr-id="14"/>
</cell>
<cell id="1" start-col="3" start-row="6">
<bounding-box x1="258" x2="277" y1="366" y2="377"/>
<content>41.5</content>
<instruction instr-id="956" subinstr-id="16"/>
</cell>
<cell id="1" start-col="4" start-row="6">
<bounding-box x1="296" x2="315" y1="366" y2="377"/>
<content>73.5</content>
<instruction instr-id="956" subinstr-id="18"/>
</cell>
<cell id="1" start-col="5" start-row="6">
<bounding-box x1="338" x2="349" y1="366" y2="377"/>
<content>37</content>
<instruction instr-id="956" subinstr-id="20"/>
<instruction instr-id="956" subinstr-id="22"/>
</cell>
<cell id="1" start-col="8" start-row="6">
<bounding-box x1="477" x2="496" y1="366" y2="377"/>
<content>56.8</content>
<instruction instr-id="958" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="7">
<bounding-box x1="73" x2="104" y1="352" y2="363"/>
<content>Greece</content>
<instruction instr-id="1022" subinstr-id="0"/>
<instruction instr-id="1022" subinstr-id="2"/>
<instruction instr-id="1022" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="7">
<bounding-box x1="159" x2="179" y1="352" y2="363"/>
<content>28.0</content>
<instruction instr-id="1024" subinstr-id="0"/>
<instruction instr-id="1024" subinstr-id="2"/>
<instruction instr-id="1024" subinstr-id="4"/>
<instruction instr-id="1024" subinstr-id="6"/>
</cell>
<cell id="1" start-col='3' start-row="7">
<bounding-box x1="258" x2="277" y1="352" y2="363"/>
<content>58.7</content>
<instruction instr-id="1026" subinstr-id="0"/>
<instruction instr-id="1026" subinstr-id="2"/>
<instruction instr-id="1026" subinstr-id="4"/>
<instruction instr-id="1026" subinstr-id="6"/>
</cell>
<cell id="1" start-col="8" start-row="7">
<bounding-box x1="477" x2="496" y1="352" y2="363"/>
<content>58.7</content>
<instruction instr-id="1028" subinstr-id="0"/>
<instruction instr-id="1028" subinstr-id="2"/>
<instruction instr-id="1028" subinstr-id="4"/>
<instruction instr-id="1028" subinstr-id="6"/>
</cell>
<cell id="1" start-col="0" start-row="8">
<bounding-box x1="73" x2="104" y1="339" y2="350"/>
<content>Ireland</content>
<instruction instr-id="1092" subinstr-id="0"/>
<instruction instr-id="1092" subinstr-id="2"/>
<instruction instr-id="1092" subinstr-id="4"/>
<instruction instr-id="1092" subinstr-id="6"/>
<instruction instr-id="1092" subinstr-id="8"/>
<instruction instr-id="1092" subinstr-id="10"/>
<instruction instr-id="1092" subinstr-id="12"/>
</cell>
<cell id="1" start-col="1" start-row="8">
<bounding-box x1="159" x2="179" y1="339" y2="350"/>
<content>64.2</content>
<instruction instr-id="1094" subinstr-id="0"/>
</cell>
<cell id="1" start-col="2" start-row="8">
<bounding-box x1="220" x2="231" y1="339" y2="350"/>
<content>50</content>
<instruction instr-id="1094" subinstr-id="2"/>
<instruction instr-id="1094" subinstr-id="4"/>
</cell>
<cell id="1" start-col="3" start-row="8">
<bounding-box x1="258" x2="277" y1="339" y2="350"/>
<content>50.4</content>
<instruction instr-id="1094" subinstr-id="6"/>
</cell>
<cell id="1" start-col="8" start-row="8">
<bounding-box x1="477" x2="496" y1="339" y2="350"/>
<content>50.2</content>
<instruction instr-id="1096" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="9">
<bounding-box x1="73" x2="93" y1="325" y2="336"/>
<content>Italy</content>
<instruction instr-id="1159" subinstr-id="0"/>
<instruction instr-id="1159" subinstr-id="2"/>
<instruction instr-id="1159" subinstr-id="4"/>
<instruction instr-id="1159" subinstr-id="6"/>
<instruction instr-id="1159" subinstr-id="8"/>
</cell>
<cell id="1" start-col="1" start-row="9">
<bounding-box x1="159" x2="179" y1="325" y2="336"/>
<content>11.8</content>
<instruction instr-id="1161" subinstr-id="0"/>
</cell>
<cell id="1" start-col="2" start-row="9">
<bounding-box x1="220" x2="231" y1="325" y2="336"/>
<content>30</content>
<instruction instr-id="1161" subinstr-id="2"/>
<instruction instr-id="1161" subinstr-id="4"/>
</cell>
<cell id="1" start-col="3" start-row="9">
<bounding-box x1="262" x2="273" y1="325" y2="336"/>
<content>35</content>
<instruction instr-id="1161" subinstr-id="6"/>
<instruction instr-id="1161" subinstr-id="8"/>
</cell>
<cell id="1" start-col="6" start-row="9">
<bounding-box x1="376" x2="387" y1="325" y2="336"/>
<content>21</content>
<instruction instr-id="1163" subinstr-id="0"/>
<instruction instr-id="1163" subinstr-id="2"/>
</cell>
<cell id="1" start-col="7" start-row="9">
<bounding-box x1="414" x2="433" y1="325" y2="336"/>
<content>58.5</content>
<instruction instr-id="1163" subinstr-id="4"/>
</cell>
<cell id="1" start-col="8" start-row="9">
<bounding-box x1="477" x2="496" y1="325" y2="336"/>
<content>36.1</content>
<instruction instr-id="1163" subinstr-id="6"/>
</cell>
<cell id="1" start-col="0" start-row="10">
<bounding-box x1="73" x2="126" y1="312" y2="322"/>
<content>Netherlands</content>
<instruction instr-id="1226" subinstr-id="0"/>
<instruction instr-id="1226" subinstr-id="2"/>
<instruction instr-id="1226" subinstr-id="4"/>
<instruction instr-id="1226" subinstr-id="6"/>
<instruction instr-id="1226" subinstr-id="8"/>
<instruction instr-id="1226" subinstr-id="10"/>
<instruction instr-id="1226" subinstr-id="12"/>
<instruction instr-id="1226" subinstr-id="14"/>
</cell>
<cell id="1" start-col="1" start-row="10">
<bounding-box x1="159" x2="179" y1="312" y2="322"/>
<content>50.4</content>
<instruction instr-id="1226" subinstr-id="16"/>
</cell>
<cell id="1" start-col="2" start-row="10">
<bounding-box x1="220" x2="231" y1="312" y2="322"/>
<content>79</content>
<instruction instr-id="1226" subinstr-id="18"/>
<instruction instr-id="1226" subinstr-id="20"/>
</cell>
<cell id="1" start-col="3" start-row="10">
<bounding-box x1="258" x2="277" y1="312" y2="322"/>
<content>76.7</content>
<instruction instr-id="1226" subinstr-id="22"/>
</cell>
<cell id="1" start-col="4" start-row="10">
<bounding-box x1="296" x2="315" y1="312" y2="322"/>
<content>71.7</content>
<instruction instr-id="1226" subinstr-id="24"/>
</cell>
<cell id="1" start-col="5" start-row="10">
<bounding-box x1="338" x2="349" y1="312" y2="322"/>
<content>59</content>
<instruction instr-id="1226" subinstr-id="26"/>
<instruction instr-id="1226" subinstr-id="28"/>
</cell>
<cell id="1" start-col="8" start-row="10">
<bounding-box x1="477" x2="496" y1="312" y2="322"/>
<content>71.6</content>
<instruction instr-id="1228" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="11">
<bounding-box x1="73" x2="110" y1="298" y2="309"/>
<content>Portugal</content>
<instruction instr-id="1291" subinstr-id="0"/>
<instruction instr-id="1291" subinstr-id="2"/>
<instruction instr-id="1291" subinstr-id="4"/>
<instruction instr-id="1291" subinstr-id="6"/>
<instruction instr-id="1291" subinstr-id="8"/>
<instruction instr-id="1291" subinstr-id="10"/>
<instruction instr-id="1291" subinstr-id="12"/>
</cell>
<cell id="1" start-col="1" start-row="11">
<bounding-box x1="159" x2="179" y1="298" y2="309"/>
<content>55.7</content>
<instruction instr-id="1291" subinstr-id="14"/>
</cell>
<cell id="1" start-col="2" start-row="11">
<bounding-box x1="220" x2="231" y1="298" y2="309"/>
<content>52</content>
<instruction instr-id="1291" subinstr-id="16"/>
<instruction instr-id="1291" subinstr-id="18"/>
</cell>
<cell id="1" start-col="3" start-row="11">
<bounding-box x1="258" x2="277" y1="298" y2="309"/>
<content>52.9</content>
<instruction instr-id="1291" subinstr-id="20"/>
</cell>
<cell id="1" start-col="7" start-row="11">
<bounding-box x1="418" x2="429" y1="298" y2="309"/>
<content>55</content>
<instruction instr-id="1293" subinstr-id="0"/>
<instruction instr-id="1293" subinstr-id="2"/>
</cell>
<cell id="1" start-col="8" start-row="11">
<bounding-box x1="477" x2="496" y1="298" y2="309"/>
<content>53.3</content>
<instruction instr-id="1293" subinstr-id="4"/>
</cell>
<cell id="1" start-col="0" start-row="12">
<bounding-box x1="73" x2="98" y1="284" y2="295"/>
<content>Spain</content>
<instruction instr-id="1356" subinstr-id="0"/>
<instruction instr-id="1356" subinstr-id="2"/>
<instruction instr-id="1356" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="12">
<bounding-box x1="159" x2="179" y1="284" y2="295"/>
<content>32.1</content>
<instruction instr-id="1358" subinstr-id="0"/>
</cell>
<cell id="1" start-col="2" start-row="12">
<bounding-box x1="220" x2="231" y1="284" y2="295"/>
<content>38</content>
<instruction instr-id="1358" subinstr-id="2"/>
<instruction instr-id="1358" subinstr-id="4"/>
</cell>
<cell id="1" start-col="3" start-row="12">
<bounding-box x1="258" x2="277" y1="284" y2="295"/>
<content>34.6</content>
<instruction instr-id="1358" subinstr-id="6"/>
</cell>
<cell id="1" start-col="5" start-row="12">
<bounding-box x1="338" x2="349" y1="284" y2="295"/>
<content>23</content>
<instruction instr-id="1360" subinstr-id="0"/>
<instruction instr-id="1360" subinstr-id="2"/>
</cell>
<cell id="1" start-col="7" start-row="12">
<bounding-box x1="414" x2="433" y1="284" y2="295"/>
<content>47.7</content>
<instruction instr-id="1362" subinstr-id="0"/>
</cell>
<cell id="1" start-col="8" start-row="12">
<bounding-box x1="477" x2="496" y1="284" y2="295"/>
<content>35.8</content>
<instruction instr-id="1362" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="13">
<bounding-box x1="73" x2="108" y1="271" y2="282"/>
<content>Sweden</content>
<instruction instr-id="1425" subinstr-id="0"/>
<instruction instr-id="1425" subinstr-id="2"/>
<instruction instr-id="1425" subinstr-id="4"/>
<instruction instr-id="1425" subinstr-id="6"/>
<instruction instr-id="1425" subinstr-id="8"/>
</cell>
<cell id="1" start-col="1" start-row="13">
<bounding-box x1="159" x2="179" y1="271" y2="282"/>
<content>77.9</content>
<instruction instr-id="1425" subinstr-id="10"/>
</cell>
<cell id="1" start-col="2" start-row="13">
<bounding-box x1="220" x2="231" y1="271" y2="282"/>
<content>87</content>
<instruction instr-id="1425" subinstr-id="12"/>
<instruction instr-id="1425" subinstr-id="14"/>
</cell>
<cell id="1" start-col="3" start-row="13">
<bounding-box x1="258" x2="277" y1="271" y2="282"/>
<content>70.5</content>
<instruction instr-id="1425" subinstr-id="16"/>
</cell>
<cell id="1" start-col="4" start-row="13">
<bounding-box x1="296" x2="315" y1="271" y2="282"/>
<content>93.5</content>
<instruction instr-id="1425" subinstr-id="18"/>
</cell>
<cell id="1" start-col="8" start-row="13">
<bounding-box x1="477" x2="496" y1="271" y2="282"/>
<content>83.7</content>
<instruction instr-id="1427" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="14">
<bounding-box x1="73" x2="89" y1="257" y2="268"/>
<content>UK</content>
<instruction instr-id="1490" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="14">
<bounding-box x1="159" x2="179" y1="257" y2="268"/>
<content>56.2</content>
<instruction instr-id="1492" subinstr-id="0"/>
</cell>
<cell id="1" start-col="2" start-row="14">
<bounding-box x1="220" x2="231" y1="257" y2="268"/>
<content>67</content>
<instruction instr-id="1492" subinstr-id="2"/>
<instruction instr-id="1492" subinstr-id="4"/>
</cell>
<cell id="1" start-col="3" start-row="14">
<bounding-box x1="258" x2="277" y1="257" y2="268"/>
<content>65.2</content>
<instruction instr-id="1492" subinstr-id="6"/>
</cell>
<cell id="1" start-col="5" start-row="14">
<bounding-box x1="338" x2="349" y1="257" y2="268"/>
<content>60</content>
<instruction instr-id="1494" subinstr-id="0"/>
<instruction instr-id="1494" subinstr-id="2"/>
</cell>
<cell id="1" start-col="6" start-row="14">
<bounding-box x1="376" x2="387" y1="257" y2="268"/>
<content>63</content>
<instruction instr-id="1494" subinstr-id="4"/>
<instruction instr-id="1494" subinstr-id="6"/>
</cell>
<cell id="1" start-col="8" start-row="14">
<bounding-box x1="477" x2="496" y1="257" y2="268"/>
<content>63.8</content>
<instruction instr-id="1496" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="15">
<bounding-box x1="73" x2="110" y1="244" y2="255"/>
<content>Average</content>
<instruction instr-id="1559" subinstr-id="0"/>
<instruction instr-id="1559" subinstr-id="2"/>
<instruction instr-id="1559" subinstr-id="4"/>
<instruction instr-id="1559" subinstr-id="6"/>
<instruction instr-id="1559" subinstr-id="8"/>
<instruction instr-id="1559" subinstr-id="10"/>
</cell>
<cell id="1" start-col="1" start-row="15">
<bounding-box x1="159" x2="179" y1="244" y2="255"/>
<content>52.9</content>
<instruction instr-id="1559" subinstr-id="12"/>
</cell>
<cell id="1" start-col="8" start-row="15">
<bounding-box x1="477" x2="496" y1="244" y2="255"/>
<content>61.7</content>
<instruction instr-id="1561" subinstr-id="-1"/>
</cell>
</region>
</table>
</document>

View File

@ -0,0 +1 @@
{"numExpectedTables":2,"numCorrectlyDetectedTables":2,"numErroneouslyDetectedTables":0,"expectedFailure":false}

View File

@ -0,0 +1,321 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="competition-entry-region-model.xsd" filename='bm_eu-006-reg.xml'>
<table id='1'>
<region id='1' page='1'>
<instruction instr-id='14'/>
<instruction instr-id='14' subinstr-id='2'/>
<instruction instr-id='14' subinstr-id='4'/>
<instruction instr-id='14' subinstr-id='6'/>
<instruction instr-id='14' subinstr-id='8'/>
<instruction instr-id='14' subinstr-id='10'/>
<instruction instr-id='14' subinstr-id='12'/>
<instruction instr-id='14' subinstr-id='14'/>
<instruction instr-id='14' subinstr-id='16'/>
<instruction instr-id='14' subinstr-id='18'/>
<instruction instr-id='14' subinstr-id='20'/>
<instruction instr-id='14' subinstr-id='22'/>
<instruction instr-id='14' subinstr-id='24'/>
<instruction instr-id='14' subinstr-id='26'/>
<instruction instr-id='14' subinstr-id='28'/>
<instruction instr-id='14' subinstr-id='30'/>
<instruction instr-id='14' subinstr-id='32'/>
<instruction instr-id='14' subinstr-id='34'/>
<instruction instr-id='14' subinstr-id='36'/>
<instruction instr-id='14' subinstr-id='38'/>
<instruction instr-id='14' subinstr-id='40'/>
<instruction instr-id='14' subinstr-id='42'/>
<instruction instr-id='14' subinstr-id='44'/>
<instruction instr-id='14' subinstr-id='46'/>
<instruction instr-id='47'/>
<instruction instr-id='47' subinstr-id='2'/>
<instruction instr-id='47' subinstr-id='4'/>
<instruction instr-id='47' subinstr-id='6'/>
<instruction instr-id='47' subinstr-id='8'/>
<instruction instr-id='49'/>
<instruction instr-id='51'/>
<instruction instr-id='51' subinstr-id='2'/>
<instruction instr-id='79'/>
<instruction instr-id='79' subinstr-id='2'/>
<instruction instr-id='79' subinstr-id='4'/>
<instruction instr-id='79' subinstr-id='6'/>
<instruction instr-id='81'/>
<instruction instr-id='83'/>
<instruction instr-id='110'/>
<instruction instr-id='110' subinstr-id='2'/>
<instruction instr-id='110' subinstr-id='4'/>
<instruction instr-id='110' subinstr-id='6'/>
<instruction instr-id='110' subinstr-id='8'/>
<instruction instr-id='110' subinstr-id='10'/>
<instruction instr-id='110' subinstr-id='12'/>
<instruction instr-id='110' subinstr-id='14'/>
<instruction instr-id='110' subinstr-id='16'/>
<instruction instr-id='112'/>
<instruction instr-id='114'/>
<instruction instr-id='141'/>
<instruction instr-id='141' subinstr-id='2'/>
<instruction instr-id='141' subinstr-id='4'/>
<instruction instr-id='143'/>
<instruction instr-id='145'/>
<instruction instr-id='173'/>
<instruction instr-id='173' subinstr-id='2'/>
<instruction instr-id='173' subinstr-id='4'/>
<instruction instr-id='173' subinstr-id='6'/>
<instruction instr-id='173' subinstr-id='8'/>
<instruction instr-id='173' subinstr-id='10'/>
<instruction instr-id='173' subinstr-id='12'/>
<instruction instr-id='175'/>
<instruction instr-id='177'/>
<instruction instr-id='204'/>
<instruction instr-id='204' subinstr-id='2'/>
<instruction instr-id='204' subinstr-id='4'/>
<instruction instr-id='204' subinstr-id='6'/>
<instruction instr-id='204' subinstr-id='8'/>
<instruction instr-id='206'/>
<instruction instr-id='208'/>
<instruction instr-id='237'/>
<instruction instr-id='237' subinstr-id='2'/>
<instruction instr-id='237' subinstr-id='4'/>
<instruction instr-id='239'/>
<instruction instr-id='239' subinstr-id='2'/>
<instruction instr-id='239' subinstr-id='4'/>
<instruction instr-id='239' subinstr-id='6'/>
<instruction instr-id='241'/>
<instruction instr-id='241' subinstr-id='2'/>
<instruction instr-id='241' subinstr-id='4'/>
<instruction instr-id='269'/>
<instruction instr-id='269' subinstr-id='2'/>
<instruction instr-id='269' subinstr-id='4'/>
<instruction instr-id='269' subinstr-id='6'/>
<instruction instr-id='269' subinstr-id='8'/>
<instruction instr-id='269' subinstr-id='10'/>
<instruction instr-id='269' subinstr-id='12'/>
<instruction instr-id='271'/>
<instruction instr-id='273'/>
<instruction instr-id='301'/>
<instruction instr-id='301' subinstr-id='2'/>
<instruction instr-id='301' subinstr-id='4'/>
<instruction instr-id='303'/>
<instruction instr-id='305'/>
<instruction instr-id='332'/>
<instruction instr-id='332' subinstr-id='2'/>
<instruction instr-id='332' subinstr-id='4'/>
<instruction instr-id='334'/>
<instruction instr-id='336'/>
<instruction instr-id='364'/>
<instruction instr-id='364' subinstr-id='2'/>
<instruction instr-id='364' subinstr-id='4'/>
<instruction instr-id='364' subinstr-id='6'/>
<instruction instr-id='366'/>
<instruction instr-id='368'/>
<instruction instr-id='396'/>
<instruction instr-id='396' subinstr-id='2'/>
<instruction instr-id='396' subinstr-id='4'/>
<instruction instr-id='396' subinstr-id='6'/>
<instruction instr-id='396' subinstr-id='8'/>
<instruction instr-id='398'/>
<instruction instr-id='400'/>
<instruction instr-id='427'/>
<instruction instr-id='427' subinstr-id='2'/>
<instruction instr-id='427' subinstr-id='4'/>
<instruction instr-id='427' subinstr-id='6'/>
<instruction instr-id='427' subinstr-id='8'/>
<instruction instr-id='427' subinstr-id='10'/>
<instruction instr-id='427' subinstr-id='12'/>
<instruction instr-id='429'/>
<instruction instr-id='431'/>
<instruction instr-id='459'/>
<instruction instr-id='459' subinstr-id='2'/>
<instruction instr-id='459' subinstr-id='4'/>
<instruction instr-id='461'/>
<instruction instr-id='463'/>
<instruction instr-id='491'/>
<instruction instr-id='491' subinstr-id='2'/>
<instruction instr-id='491' subinstr-id='4'/>
<instruction instr-id='491' subinstr-id='6'/>
<instruction instr-id='491' subinstr-id='8'/>
<instruction instr-id='493'/>
<instruction instr-id='495'/>
<bounding-box x1='113' y1='536' x2='460' y2='750'/>
</region>
</table>
<table id='2'>
<region id='1' page='1'>
<instruction instr-id='557'/>
<instruction instr-id='557' subinstr-id='2'/>
<instruction instr-id='557' subinstr-id='4'/>
<instruction instr-id='557' subinstr-id='6'/>
<instruction instr-id='602'/>
<instruction instr-id='602' subinstr-id='2'/>
<instruction instr-id='602' subinstr-id='4'/>
<instruction instr-id='602' subinstr-id='6'/>
<instruction instr-id='602' subinstr-id='8'/>
<instruction instr-id='602' subinstr-id='10'/>
<instruction instr-id='602' subinstr-id='12'/>
<instruction instr-id='602' subinstr-id='14'/>
<instruction instr-id='602' subinstr-id='16'/>
<instruction instr-id='602' subinstr-id='18'/>
<instruction instr-id='602' subinstr-id='20'/>
<instruction instr-id='602' subinstr-id='22'/>
<instruction instr-id='602' subinstr-id='24'/>
<instruction instr-id='641'/>
<instruction instr-id='641' subinstr-id='2'/>
<instruction instr-id='641' subinstr-id='4'/>
<instruction instr-id='641' subinstr-id='6'/>
<instruction instr-id='643'/>
<instruction instr-id='643' subinstr-id='2'/>
<instruction instr-id='643' subinstr-id='4'/>
<instruction instr-id='643' subinstr-id='6'/>
<instruction instr-id='684'/>
<instruction instr-id='684' subinstr-id='2'/>
<instruction instr-id='684' subinstr-id='4'/>
<instruction instr-id='684' subinstr-id='6'/>
<instruction instr-id='684' subinstr-id='8'/>
<instruction instr-id='684' subinstr-id='10'/>
<instruction instr-id='686'/>
<instruction instr-id='686' subinstr-id='2'/>
<instruction instr-id='686' subinstr-id='4'/>
<instruction instr-id='688'/>
<instruction instr-id='688' subinstr-id='2'/>
<instruction instr-id='688' subinstr-id='4'/>
<instruction instr-id='688' subinstr-id='6'/>
<instruction instr-id='688' subinstr-id='8'/>
<instruction instr-id='688' subinstr-id='10'/>
<bounding-box x1='112' y1='346' x2='461' y2='397'/>
</region>
</table>
<table id='3'>
<region id='2' page='2'>
<instruction instr-id='18'/>
<instruction instr-id='18' subinstr-id='2'/>
<instruction instr-id='18' subinstr-id='4'/>
<instruction instr-id='18' subinstr-id='6'/>
<instruction instr-id='18' subinstr-id='8'/>
<instruction instr-id='18' subinstr-id='10'/>
<instruction instr-id='18' subinstr-id='12'/>
<instruction instr-id='18' subinstr-id='14'/>
<instruction instr-id='18' subinstr-id='16'/>
<instruction instr-id='18' subinstr-id='18'/>
<instruction instr-id='18' subinstr-id='20'/>
<instruction instr-id='18' subinstr-id='22'/>
<instruction instr-id='18' subinstr-id='24'/>
<instruction instr-id='18' subinstr-id='26'/>
<instruction instr-id='18' subinstr-id='28'/>
<instruction instr-id='18' subinstr-id='30'/>
<instruction instr-id='18' subinstr-id='32'/>
<instruction instr-id='18' subinstr-id='34'/>
<instruction instr-id='43'/>
<instruction instr-id='43' subinstr-id='2'/>
<instruction instr-id='43' subinstr-id='4'/>
<instruction instr-id='43' subinstr-id='6'/>
<instruction instr-id='43' subinstr-id='8'/>
<instruction instr-id='45'/>
<instruction instr-id='67'/>
<instruction instr-id='67' subinstr-id='2'/>
<instruction instr-id='67' subinstr-id='4'/>
<instruction instr-id='67' subinstr-id='6'/>
<instruction instr-id='69'/>
<instruction instr-id='91'/>
<instruction instr-id='91' subinstr-id='2'/>
<instruction instr-id='91' subinstr-id='4'/>
<instruction instr-id='91' subinstr-id='6'/>
<instruction instr-id='91' subinstr-id='8'/>
<instruction instr-id='93'/>
<instruction instr-id='93' subinstr-id='2'/>
<instruction instr-id='93' subinstr-id='4'/>
<instruction instr-id='115'/>
<instruction instr-id='115' subinstr-id='2'/>
<instruction instr-id='115' subinstr-id='4'/>
<instruction instr-id='115' subinstr-id='6'/>
<instruction instr-id='115' subinstr-id='8'/>
<instruction instr-id='115' subinstr-id='10'/>
<instruction instr-id='137'/>
<instruction instr-id='137' subinstr-id='2'/>
<instruction instr-id='137' subinstr-id='4'/>
<instruction instr-id='137' subinstr-id='6'/>
<instruction instr-id='137' subinstr-id='8'/>
<instruction instr-id='137' subinstr-id='10'/>
<instruction instr-id='137' subinstr-id='12'/>
<instruction instr-id='158'/>
<instruction instr-id='160'/>
<instruction instr-id='160' subinstr-id='2'/>
<instruction instr-id='160' subinstr-id='4'/>
<bounding-box x1='193' y1='619' x2='413' y2='711'/>
</region>
</table>
<table id='4'>
<region id='1' page='3'>
<instruction instr-id='12'/>
<instruction instr-id='12' subinstr-id='2'/>
<instruction instr-id='12' subinstr-id='4'/>
<instruction instr-id='12' subinstr-id='6'/>
<instruction instr-id='12' subinstr-id='8'/>
<instruction instr-id='12' subinstr-id='10'/>
<instruction instr-id='12' subinstr-id='12'/>
<instruction instr-id='12' subinstr-id='14'/>
<instruction instr-id='12' subinstr-id='16'/>
<instruction instr-id='12' subinstr-id='18'/>
<instruction instr-id='12' subinstr-id='20'/>
<instruction instr-id='12' subinstr-id='22'/>
<instruction instr-id='12' subinstr-id='24'/>
<instruction instr-id='12' subinstr-id='26'/>
<instruction instr-id='12' subinstr-id='28'/>
<instruction instr-id='12' subinstr-id='30'/>
<instruction instr-id='12' subinstr-id='32'/>
<instruction instr-id='12' subinstr-id='34'/>
<instruction instr-id='12' subinstr-id='36'/>
<instruction instr-id='12' subinstr-id='38'/>
<instruction instr-id='29'/>
<instruction instr-id='29' subinstr-id='2'/>
<instruction instr-id='29' subinstr-id='4'/>
<instruction instr-id='29' subinstr-id='6'/>
<instruction instr-id='29' subinstr-id='8'/>
<instruction instr-id='29' subinstr-id='10'/>
<instruction instr-id='29' subinstr-id='12'/>
<instruction instr-id='31'/>
<instruction instr-id='33'/>
<instruction instr-id='50'/>
<instruction instr-id='50' subinstr-id='2'/>
<instruction instr-id='50' subinstr-id='4'/>
<instruction instr-id='50' subinstr-id='6'/>
<instruction instr-id='50' subinstr-id='8'/>
<instruction instr-id='50' subinstr-id='10'/>
<instruction instr-id='50' subinstr-id='12'/>
<instruction instr-id='52'/>
<instruction instr-id='54'/>
<instruction instr-id='56'/>
<instruction instr-id='56' subinstr-id='2'/>
<instruction instr-id='56' subinstr-id='4'/>
<instruction instr-id='56' subinstr-id='6'/>
<instruction instr-id='58'/>
<instruction instr-id='60'/>
<instruction instr-id='62'/>
<instruction instr-id='62' subinstr-id='2'/>
<instruction instr-id='62' subinstr-id='4'/>
<instruction instr-id='64'/>
<instruction instr-id='66'/>
<instruction instr-id='68'/>
<instruction instr-id='68' subinstr-id='2'/>
<instruction instr-id='68' subinstr-id='4'/>
<instruction instr-id='68' subinstr-id='6'/>
<instruction instr-id='70'/>
<instruction instr-id='72'/>
<instruction instr-id='76'/>
<instruction instr-id='76' subinstr-id='2'/>
<instruction instr-id='76' subinstr-id='4'/>
<instruction instr-id='76' subinstr-id='6'/>
<instruction instr-id='76' subinstr-id='8'/>
<instruction instr-id='76' subinstr-id='10'/>
<instruction instr-id='76' subinstr-id='12'/>
<instruction instr-id='76' subinstr-id='14'/>
<instruction instr-id='78'/>
<instruction instr-id='78' subinstr-id='2'/>
<instruction instr-id='78' subinstr-id='4'/>
<instruction instr-id='80'/>
<instruction instr-id='80' subinstr-id='2'/>
<instruction instr-id='80' subinstr-id='4'/>
<instruction instr-id='80' subinstr-id='6'/>
<bounding-box x1='107' y1='641' x2='486' y2='730'/>
</region>
</table>
</document>

View File

@ -0,0 +1,725 @@
<?xml version="1.0" encoding="UTF-8"?>
<document filename="bm_eu-006-str.xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="competition-entry-structure-model.xsd">
<table id="1">
<region col-increment="0" id="1" page="1" row-increment="0">
<cell id="1" start-col="0" start-row="0">
<bounding-box x1="113" x2="145" y1="739" y2="750"/>
<content>Names</content>
<instruction instr-id="14" subinstr-id="0"/>
<instruction instr-id="14" subinstr-id="2"/>
<instruction instr-id="14" subinstr-id="4"/>
<instruction instr-id="14" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="0">
<bounding-box x1="237" x2="360" y1="739" y2="750"/>
<content>Own brands market share</content>
<instruction instr-id="14" subinstr-id="8"/>
<instruction instr-id="14" subinstr-id="10"/>
<instruction instr-id="14" subinstr-id="12"/>
<instruction instr-id="14" subinstr-id="14"/>
<instruction instr-id="14" subinstr-id="16"/>
<instruction instr-id="14" subinstr-id="18"/>
<instruction instr-id="14" subinstr-id="20"/>
<instruction instr-id="14" subinstr-id="22"/>
<instruction instr-id="14" subinstr-id="24"/>
<instruction instr-id="14" subinstr-id="26"/>
<instruction instr-id="14" subinstr-id="28"/>
<instruction instr-id="14" subinstr-id="30"/>
</cell>
<cell id="1" start-col="2" start-row="0">
<bounding-box x1="381" x2="460" y1="739" y2="750"/>
<content>Number of items</content>
<instruction instr-id="14" subinstr-id="32"/>
<instruction instr-id="14" subinstr-id="34"/>
<instruction instr-id="14" subinstr-id="36"/>
<instruction instr-id="14" subinstr-id="38"/>
<instruction instr-id="14" subinstr-id="40"/>
<instruction instr-id="14" subinstr-id="42"/>
<instruction instr-id="14" subinstr-id="44"/>
<instruction instr-id="14" subinstr-id="46"/>
</cell>
<cell id="1" start-col="0" start-row="1">
<bounding-box x1="113" x2="151" y1="726" y2="736"/>
<content>Franprix</content>
<instruction instr-id="47" subinstr-id="0"/>
<instruction instr-id="47" subinstr-id="2"/>
<instruction instr-id="47" subinstr-id="4"/>
<instruction instr-id="47" subinstr-id="6"/>
<instruction instr-id="47" subinstr-id="8"/>
</cell>
<cell id="1" start-col="1" start-row="1">
<bounding-box x1="291" x2="310" y1="726" y2="736"/>
<content>28.0</content>
<instruction instr-id="49" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="1">
<bounding-box x1="426" x2="442" y1="726" y2="736"/>
<content>n.a.</content>
<instruction instr-id="51" subinstr-id="0"/>
<instruction instr-id="51" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="2">
<bounding-box x1="113" x2="144" y1="712" y2="723"/>
<content>Casino</content>
<instruction instr-id="79" subinstr-id="0"/>
<instruction instr-id="79" subinstr-id="2"/>
<instruction instr-id="79" subinstr-id="4"/>
<instruction instr-id="79" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="2">
<bounding-box x1="291" x2="310" y1="712" y2="723"/>
<content>24.8</content>
<instruction instr-id="81" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="2">
<bounding-box x1="420" x2="442" y1="712" y2="723"/>
<content>1800</content>
<instruction instr-id="83" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="3">
<bounding-box x1="113" x2="166" y1="698" y2="709"/>
<content>Intermarché</content>
<instruction instr-id="110" subinstr-id="0"/>
<instruction instr-id="110" subinstr-id="2"/>
<instruction instr-id="110" subinstr-id="4"/>
<instruction instr-id="110" subinstr-id="6"/>
<instruction instr-id="110" subinstr-id="8"/>
<instruction instr-id="110" subinstr-id="10"/>
<instruction instr-id="110" subinstr-id="12"/>
<instruction instr-id="110" subinstr-id="14"/>
<instruction instr-id="110" subinstr-id="16"/>
</cell>
<cell id="1" start-col="1" start-row="3">
<bounding-box x1="291" x2="310" y1="698" y2="709"/>
<content>24.7</content>
<instruction instr-id="112" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="3">
<bounding-box x1="420" x2="442" y1="698" y2="709"/>
<content>2500</content>
<instruction instr-id="114" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="4">
<bounding-box x1="113" x2="140" y1="685" y2="696"/>
<content>Géant</content>
<instruction instr-id="141" subinstr-id="0"/>
<instruction instr-id="141" subinstr-id="2"/>
<instruction instr-id="141" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="4">
<bounding-box x1="291" x2="310" y1="685" y2="696"/>
<content>20.0</content>
<instruction instr-id="143" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="4">
<bounding-box x1="420" x2="442" y1="685" y2="696"/>
<content>1800</content>
<instruction instr-id="145" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="5">
<bounding-box x1="113" x2="156" y1="671" y2="682"/>
<content>Carrefour</content>
<instruction instr-id="173" subinstr-id="0"/>
<instruction instr-id="173" subinstr-id="2"/>
<instruction instr-id="173" subinstr-id="4"/>
<instruction instr-id="173" subinstr-id="6"/>
<instruction instr-id="173" subinstr-id="8"/>
<instruction instr-id="173" subinstr-id="10"/>
<instruction instr-id="173" subinstr-id="12"/>
</cell>
<cell id="1" start-col="1" start-row="5">
<bounding-box x1="291" x2="310" y1="671" y2="682"/>
<content>18.9</content>
<instruction instr-id="175" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="5">
<bounding-box x1="420" x2="442" y1="671" y2="682"/>
<content>1642</content>
<instruction instr-id="177" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="6">
<bounding-box x1="113" x2="157" y1="658" y2="669"/>
<content>Monoprix</content>
<instruction instr-id="204" subinstr-id="0"/>
<instruction instr-id="204" subinstr-id="2"/>
<instruction instr-id="204" subinstr-id="4"/>
<instruction instr-id="204" subinstr-id="6"/>
<instruction instr-id="204" subinstr-id="8"/>
</cell>
<cell id="1" start-col="1" start-row="6">
<bounding-box x1="291" x2="310" y1="658" y2="669"/>
<content>18.7</content>
<instruction instr-id="206" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="6">
<bounding-box x1="420" x2="442" y1="658" y2="669"/>
<content>1800</content>
<instruction instr-id="208" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="7">
<bounding-box x1="113" x2="161" y1="644" y2="655"/>
<content>Système U</content>
<instruction instr-id="237" subinstr-id="0"/>
<instruction instr-id="237" subinstr-id="2"/>
<instruction instr-id="237" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="7">
<bounding-box x1="291" x2="310" y1="644" y2="655"/>
<content>18.5</content>
<instruction instr-id="239" subinstr-id="0"/>
<instruction instr-id="239" subinstr-id="2"/>
<instruction instr-id="239" subinstr-id="4"/>
<instruction instr-id="239" subinstr-id="6"/>
</cell>
<cell id="1" start-col="2" start-row="7">
<bounding-box x1="423" x2="439" y1="644" y2="655"/>
<content>985</content>
<instruction instr-id="241" subinstr-id="0"/>
<instruction instr-id="241" subinstr-id="2"/>
<instruction instr-id="241" subinstr-id="4"/>
</cell>
<cell id="1" start-col="0" start-row="8">
<bounding-box x1="113" x2="157" y1="631" y2="642"/>
<content>Continent</content>
<instruction instr-id="269" subinstr-id="0"/>
<instruction instr-id="269" subinstr-id="2"/>
<instruction instr-id="269" subinstr-id="4"/>
<instruction instr-id="269" subinstr-id="6"/>
<instruction instr-id="269" subinstr-id="8"/>
<instruction instr-id="269" subinstr-id="10"/>
<instruction instr-id="269" subinstr-id="12"/>
</cell>
<cell id="1" start-col="1" start-row="8">
<bounding-box x1="291" x2="310" y1="631" y2="642"/>
<content>17.8</content>
<instruction instr-id="271" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="8">
<bounding-box x1="420" x2="442" y1="631" y2="642"/>
<content>1440</content>
<instruction instr-id="273" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="9">
<bounding-box x1="113" x2="133" y1="617" y2="628"/>
<content>Stoc</content>
<instruction instr-id="301" subinstr-id="0"/>
<instruction instr-id="301" subinstr-id="2"/>
<instruction instr-id="301" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="9">
<bounding-box x1="291" x2="310" y1="617" y2="628"/>
<content>16.2</content>
<instruction instr-id="303" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="9">
<bounding-box x1="423" x2="439" y1="617" y2="628"/>
<content>650</content>
<instruction instr-id="305" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="10">
<bounding-box x1="113" x2="148" y1="603" y2="614"/>
<content>Auchan</content>
<instruction instr-id="332" subinstr-id="0"/>
<instruction instr-id="332" subinstr-id="2"/>
<instruction instr-id="332" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="10">
<bounding-box x1="291" x2="310" y1="603" y2="614"/>
<content>15.7</content>
<instruction instr-id="334" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="10">
<bounding-box x1="420" x2="442" y1="603" y2="614"/>
<content>1500</content>
<instruction instr-id="336" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="11">
<bounding-box x1="113" x2="141" y1="590" y2="601"/>
<content>Match</content>
<instruction instr-id="364" subinstr-id="0"/>
<instruction instr-id="364" subinstr-id="2"/>
<instruction instr-id="364" subinstr-id="4"/>
<instruction instr-id="364" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="11">
<bounding-box x1="291" x2="310" y1="590" y2="601"/>
<content>15.4</content>
<instruction instr-id="366" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="11">
<bounding-box x1="420" x2="442" y1="590" y2="601"/>
<content>1100</content>
<instruction instr-id="368" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="12">
<bounding-box x1="113" x2="159" y1="576" y2="587"/>
<content>Champion</content>
<instruction instr-id="396" subinstr-id="0"/>
<instruction instr-id="396" subinstr-id="2"/>
<instruction instr-id="396" subinstr-id="4"/>
<instruction instr-id="396" subinstr-id="6"/>
<instruction instr-id="396" subinstr-id="8"/>
</cell>
<cell id="1" start-col="1" start-row="12">
<bounding-box x1="291" x2="310" y1="576" y2="587"/>
<content>15.1</content>
<instruction instr-id="398" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="12">
<bounding-box x1="420" x2="442" y1="576" y2="587"/>
<content>1240</content>
<instruction instr-id="400" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="13">
<bounding-box x1="113" x2="146" y1="563" y2="574"/>
<content>Leclerc</content>
<instruction instr-id="427" subinstr-id="0"/>
<instruction instr-id="427" subinstr-id="2"/>
<instruction instr-id="427" subinstr-id="4"/>
<instruction instr-id="427" subinstr-id="6"/>
<instruction instr-id="427" subinstr-id="8"/>
<instruction instr-id="427" subinstr-id="10"/>
<instruction instr-id="427" subinstr-id="12"/>
</cell>
<cell id="1" start-col="1" start-row="13">
<bounding-box x1="291" x2="310" y1="563" y2="574"/>
<content>14.8</content>
<instruction instr-id="429" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="13">
<bounding-box x1="423" x2="439" y1="563" y2="574"/>
<content>500</content>
<instruction instr-id="431" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="14">
<bounding-box x1="113" x2="135" y1="549" y2="560"/>
<content>Cora</content>
<instruction instr-id="459" subinstr-id="0"/>
<instruction instr-id="459" subinstr-id="2"/>
<instruction instr-id="459" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="14">
<bounding-box x1="291" x2="310" y1="549" y2="560"/>
<content>12.2</content>
<instruction instr-id="461" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="14">
<bounding-box x1="420" x2="442" y1="549" y2="560"/>
<content>1224</content>
<instruction instr-id="463" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="15">
<bounding-box x1="113" x2="149" y1="536" y2="547"/>
<content>Prisunic</content>
<instruction instr-id="491" subinstr-id="0"/>
<instruction instr-id="491" subinstr-id="2"/>
<instruction instr-id="491" subinstr-id="4"/>
<instruction instr-id="491" subinstr-id="6"/>
<instruction instr-id="491" subinstr-id="8"/>
</cell>
<cell id="1" start-col="1" start-row="15">
<bounding-box x1="291" x2="310" y1="536" y2="547"/>
<content>11.7</content>
<instruction instr-id="493" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="15">
<bounding-box x1="423" x2="439" y1="536" y2="547"/>
<content>550</content>
<instruction instr-id="495" subinstr-id="-1"/>
</cell>
</region>
</table>
<table id="2">
<region col-increment="0" id="1" page="1" row-increment="0">
<cell id="1" start-col="1" start-row="0">
<bounding-box x1="227" x2="249" y1="386" y2="397"/>
<content>1991</content>
<instruction instr-id="557" subinstr-id="0"/>
</cell>
<cell id="1" start-col="2" start-row="0">
<bounding-box x1="301" x2="323" y1="386" y2="397"/>
<content>1994</content>
<instruction instr-id="557" subinstr-id="2"/>
</cell>
<cell id="1" start-col="3" start-row="0">
<bounding-box x1="370" x2="392" y1="386" y2="397"/>
<content>1995</content>
<instruction instr-id="557" subinstr-id="4"/>
</cell>
<cell id="1" start-col="4" start-row="0">
<bounding-box x1="439" x2="461" y1="386" y2="397"/>
<content>1996</content>
<instruction instr-id="557" subinstr-id="6"/>
</cell>
<cell id="1" start-col="0" start-row="1">
<bounding-box x1="112" x2="183" y1="373" y2="384"/>
<content>National Brands</content>
<instruction instr-id="602" subinstr-id="0"/>
<instruction instr-id="602" subinstr-id="2"/>
<instruction instr-id="602" subinstr-id="4"/>
<instruction instr-id="602" subinstr-id="6"/>
<instruction instr-id="602" subinstr-id="8"/>
<instruction instr-id="602" subinstr-id="10"/>
<instruction instr-id="602" subinstr-id="12"/>
<instruction instr-id="602" subinstr-id="14"/>
<instruction instr-id="602" subinstr-id="16"/>
</cell>
<cell id="1" start-col="1" start-row="1">
<bounding-box x1="227" x2="247" y1="373" y2="384"/>
<content>80.6</content>
<instruction instr-id="602" subinstr-id="18"/>
</cell>
<cell id="1" start-col="2" start-row="1">
<bounding-box x1="301" x2="320" y1="373" y2="384"/>
<content>75.0</content>
<instruction instr-id="602" subinstr-id="20"/>
</cell>
<cell id="1" start-col="3" start-row="1">
<bounding-box x1="371" x2="390" y1="373" y2="384"/>
<content>75.3</content>
<instruction instr-id="602" subinstr-id="22"/>
</cell>
<cell id="1" start-col="4" start-row="1">
<bounding-box x1="439" x2="458" y1="373" y2="384"/>
<content>76.0</content>
<instruction instr-id="602" subinstr-id="24"/>
</cell>
<cell id="1" start-col="0" start-row="2">
<bounding-box x1="112" x2="167" y1="359" y2="370"/>
<content>Own Brands</content>
<instruction instr-id="641" subinstr-id="0"/>
<instruction instr-id="641" subinstr-id="2"/>
<instruction instr-id="641" subinstr-id="4"/>
<instruction instr-id="641" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="2">
<bounding-box x1="227" x2="247" y1="359" y2="370"/>
<content>14.7</content>
<instruction instr-id="643" subinstr-id="0"/>
</cell>
<cell id="1" start-col="2" start-row="2">
<bounding-box x1="301" x2="320" y1="359" y2="370"/>
<content>17.1</content>
<instruction instr-id="643" subinstr-id="2"/>
</cell>
<cell id="1" start-col="3" start-row="2">
<bounding-box x1="371" x2="390" y1="359" y2="370"/>
<content>17.4</content>
<instruction instr-id="643" subinstr-id="4"/>
</cell>
<cell id="1" start-col="4" start-row="2">
<bounding-box x1="439" x2="458" y1="359" y2="370"/>
<content>17.1</content>
<instruction instr-id="643" subinstr-id="6"/>
</cell>
<cell id="1" start-col="0" start-row="3">
<bounding-box x1="112" x2="182" y1="346" y2="357"/>
<content>Low price items</content>
<instruction instr-id="684" subinstr-id="0"/>
<instruction instr-id="684" subinstr-id="2"/>
<instruction instr-id="684" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="3">
<bounding-box x1="233" x2="246" y1="346" y2="357"/>
<content>4.7</content>
<instruction instr-id="684" subinstr-id="6"/>
<instruction instr-id="684" subinstr-id="8"/>
<instruction instr-id="684" subinstr-id="10"/>
</cell>
<cell id="1" start-col="2" start-row="3">
<bounding-box x1="305" x2="318" y1="346" y2="357"/>
<content>7.9</content>
<instruction instr-id="686" subinstr-id="0"/>
<instruction instr-id="686" subinstr-id="2"/>
<instruction instr-id="686" subinstr-id="4"/>
</cell>
<cell id="1" start-col="3" start-row="3">
<bounding-box x1="376" x2="390" y1="346" y2="357"/>
<content>7.3</content>
<instruction instr-id="688" subinstr-id="0"/>
<instruction instr-id="688" subinstr-id="2"/>
<instruction instr-id="688" subinstr-id="4"/>
</cell>
<cell id="1" start-col="4" start-row="3">
<bounding-box x1="444" x2="458" y1="346" y2="357"/>
<content>6.9</content>
<instruction instr-id="688" subinstr-id="6"/>
<instruction instr-id="688" subinstr-id="8"/>
<instruction instr-id="688" subinstr-id="10"/>
</cell>
</region>
</table>
<table id="3">
<region col-increment="0" id="2" page="2" row-increment="0">
<cell id="1" start-col="0" start-row="0">
<bounding-box x1="193" x2="231" y1="700" y2="711"/>
<content>Retailer</content>
<instruction instr-id="18" subinstr-id="0"/>
<instruction instr-id="18" subinstr-id="2"/>
<instruction instr-id="18" subinstr-id="4"/>
<instruction instr-id="18" subinstr-id="6"/>
<instruction instr-id="18" subinstr-id="8"/>
<instruction instr-id="18" subinstr-id="10"/>
<instruction instr-id="18" subinstr-id="12"/>
</cell>
<cell id="1" start-col="1" start-row="0">
<bounding-box x1="281" x2="413" y1="700" y2="711"/>
<content>Own Brands Market Shares</content>
<instruction instr-id="18" subinstr-id="14"/>
<instruction instr-id="18" subinstr-id="16"/>
<instruction instr-id="18" subinstr-id="18"/>
<instruction instr-id="18" subinstr-id="20"/>
<instruction instr-id="18" subinstr-id="22"/>
<instruction instr-id="18" subinstr-id="24"/>
<instruction instr-id="18" subinstr-id="26"/>
<instruction instr-id="18" subinstr-id="28"/>
<instruction instr-id="18" subinstr-id="30"/>
<instruction instr-id="18" subinstr-id="32"/>
<instruction instr-id="18" subinstr-id="34"/>
</cell>
<cell id="1" start-col="0" start-row="1">
<bounding-box x1="193" x2="237" y1="687" y2="698"/>
<content>Monoprix</content>
<instruction instr-id="43" subinstr-id="0"/>
<instruction instr-id="43" subinstr-id="2"/>
<instruction instr-id="43" subinstr-id="4"/>
<instruction instr-id="43" subinstr-id="6"/>
<instruction instr-id="43" subinstr-id="8"/>
</cell>
<cell id="1" start-col="1" start-row="1">
<bounding-box x1="338" x2="358" y1="687" y2="698"/>
<content>28%</content>
<instruction instr-id="45" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="2">
<bounding-box x1="193" x2="224" y1="673" y2="684"/>
<content>Casino</content>
<instruction instr-id="67" subinstr-id="0"/>
<instruction instr-id="67" subinstr-id="2"/>
<instruction instr-id="67" subinstr-id="4"/>
<instruction instr-id="67" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="2">
<bounding-box x1="338" x2="358" y1="673" y2="684"/>
<content>25%</content>
<instruction instr-id="69" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="3">
<bounding-box x1="193" x2="246" y1="660" y2="671"/>
<content>Intermarché</content>
<instruction instr-id="91" subinstr-id="0"/>
<instruction instr-id="91" subinstr-id="2"/>
<instruction instr-id="91" subinstr-id="4"/>
<instruction instr-id="91" subinstr-id="6"/>
<instruction instr-id="91" subinstr-id="8"/>
</cell>
<cell id="1" start-col="1" start-row="3">
<bounding-box x1="338" x2="358" y1="660" y2="671"/>
<content>23%</content>
<instruction instr-id="93" subinstr-id="0"/>
<instruction instr-id="93" subinstr-id="2"/>
<instruction instr-id="93" subinstr-id="4"/>
</cell>
<cell id="1" start-col="0" start-row="4">
<bounding-box x1="193" x2="236" y1="646" y2="657"/>
<content>Carrefour</content>
<instruction instr-id="115" subinstr-id="0"/>
<instruction instr-id="115" subinstr-id="2"/>
<instruction instr-id="115" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="4">
<bounding-box x1="338" x2="358" y1="646" y2="657"/>
<content>22%</content>
<instruction instr-id="115" subinstr-id="6"/>
<instruction instr-id="115" subinstr-id="8"/>
<instruction instr-id="115" subinstr-id="10"/>
</cell>
<cell id="1" start-col="0" start-row="5">
<bounding-box x1="193" x2="227" y1="633" y2="644"/>
<content>Auchan</content>
<instruction instr-id="137" subinstr-id="0"/>
<instruction instr-id="137" subinstr-id="2"/>
<instruction instr-id="137" subinstr-id="4"/>
<instruction instr-id="137" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="5">
<bounding-box x1="338" x2="358" y1="633" y2="644"/>
<content>19%</content>
<instruction instr-id="137" subinstr-id="8"/>
<instruction instr-id="137" subinstr-id="10"/>
<instruction instr-id="137" subinstr-id="12"/>
</cell>
<cell id="1" start-col="0" start-row="6">
<bounding-box x1="193" x2="226" y1="619" y2="630"/>
<content>Leclerc</content>
<instruction instr-id="158" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="6">
<bounding-box x1="338" x2="358" y1="619" y2="630"/>
<content>10%</content>
<instruction instr-id="160" subinstr-id="0"/>
<instruction instr-id="160" subinstr-id="2"/>
<instruction instr-id="160" subinstr-id="4"/>
</cell>
</region>
</table>
<table id="4">
<region col-increment="0" id="1" page="3" row-increment="0">
<cell id="1" start-col="0" start-row="0">
<bounding-box x1="107" x2="142" y1="719" y2="730"/>
<content>Groups</content>
<instruction instr-id="12" subinstr-id="0"/>
<instruction instr-id="12" subinstr-id="2"/>
</cell>
<cell id="1" start-col="1" start-row="0">
<bounding-box x1="235" x2="361" y1="719" y2="730"/>
<content>Foreign turnover (FFr bn.)</content>
<instruction instr-id="12" subinstr-id="4"/>
<instruction instr-id="12" subinstr-id="6"/>
<instruction instr-id="12" subinstr-id="8"/>
<instruction instr-id="12" subinstr-id="10"/>
<instruction instr-id="12" subinstr-id="12"/>
<instruction instr-id="12" subinstr-id="14"/>
<instruction instr-id="12" subinstr-id="16"/>
<instruction instr-id="12" subinstr-id="18"/>
<instruction instr-id="12" subinstr-id="20"/>
<instruction instr-id="12" subinstr-id="22"/>
</cell>
<cell id="1" start-col="2" start-row="0">
<bounding-box x1="388" x2="486" y1="719" y2="730"/>
<content>% of Total Turnover</content>
<instruction instr-id="12" subinstr-id="24"/>
<instruction instr-id="12" subinstr-id="26"/>
<instruction instr-id="12" subinstr-id="28"/>
<instruction instr-id="12" subinstr-id="30"/>
<instruction instr-id="12" subinstr-id="32"/>
<instruction instr-id="12" subinstr-id="34"/>
<instruction instr-id="12" subinstr-id="36"/>
<instruction instr-id="12" subinstr-id="38"/>
</cell>
<cell id="1" start-col="0" start-row="1">
<bounding-box x1="107" x2="149" y1="705" y2="716"/>
<content>Carrefour</content>
<instruction instr-id="29" subinstr-id="0"/>
<instruction instr-id="29" subinstr-id="2"/>
<instruction instr-id="29" subinstr-id="4"/>
<instruction instr-id="29" subinstr-id="6"/>
<instruction instr-id="29" subinstr-id="8"/>
<instruction instr-id="29" subinstr-id="10"/>
<instruction instr-id="29" subinstr-id="12"/>
</cell>
<cell id="1" start-col="1" start-row="1">
<bounding-box x1="281" x2="300" y1="705" y2="716"/>
<content>62.7</content>
<instruction instr-id="31" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="1">
<bounding-box x1="430" x2="458" y1="705" y2="716"/>
<content>40.5%</content>
<instruction instr-id="33" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="2">
<bounding-box x1="107" x2="151" y1="693" y2="703"/>
<content>Promodès</content>
<instruction instr-id="50" subinstr-id="0"/>
<instruction instr-id="50" subinstr-id="2"/>
<instruction instr-id="50" subinstr-id="4"/>
<instruction instr-id="50" subinstr-id="6"/>
<instruction instr-id="50" subinstr-id="8"/>
<instruction instr-id="50" subinstr-id="10"/>
<instruction instr-id="50" subinstr-id="12"/>
</cell>
<cell id="1" start-col="1" start-row="2">
<bounding-box x1="281" x2="300" y1="693" y2="703"/>
<content>37.0</content>
<instruction instr-id="52" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="2">
<bounding-box x1="430" x2="458" y1="693" y2="703"/>
<content>35.7%</content>
<instruction instr-id="54" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="3">
<bounding-box x1="107" x2="141" y1="680" y2="691"/>
<content>Auchan</content>
<instruction instr-id="56" subinstr-id="0"/>
<instruction instr-id="56" subinstr-id="2"/>
<instruction instr-id="56" subinstr-id="4"/>
<instruction instr-id="56" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="3">
<bounding-box x1="281" x2="300" y1="680" y2="691"/>
<content>23.5</content>
<instruction instr-id="58" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="3">
<bounding-box x1="430" x2="458" y1="680" y2="691"/>
<content>19.5%</content>
<instruction instr-id="60" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="4">
<bounding-box x1="107" x2="128" y1="667" y2="678"/>
<content>Cora</content>
<instruction instr-id="62" subinstr-id="0"/>
<instruction instr-id="62" subinstr-id="2"/>
<instruction instr-id="62" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="4">
<bounding-box x1="281" x2="300" y1="667" y2="678"/>
<content>11.0</content>
<instruction instr-id="64" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="4">
<bounding-box x1="430" x2="458" y1="667" y2="678"/>
<content>24.0%</content>
<instruction instr-id="66" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="5">
<bounding-box x1="107" x2="137" y1="654" y2="665"/>
<content>Casino</content>
<instruction instr-id="68" subinstr-id="0"/>
<instruction instr-id="68" subinstr-id="2"/>
<instruction instr-id="68" subinstr-id="4"/>
<instruction instr-id="68" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="5">
<bounding-box x1="287" x2="300" y1="654" y2="665"/>
<content>8.5</content>
<instruction instr-id="70" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="5">
<bounding-box x1="430" x2="458" y1="654" y2="665"/>
<content>11.5%</content>
<instruction instr-id="72" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="6">
<bounding-box x1="107" x2="199" y1="641" y2="652"/>
<content>Comptoirs Modernes</content>
<instruction instr-id="76" subinstr-id="0"/>
<instruction instr-id="76" subinstr-id="2"/>
<instruction instr-id="76" subinstr-id="4"/>
<instruction instr-id="76" subinstr-id="6"/>
<instruction instr-id="76" subinstr-id="8"/>
<instruction instr-id="76" subinstr-id="10"/>
<instruction instr-id="76" subinstr-id="12"/>
<instruction instr-id="76" subinstr-id="14"/>
</cell>
<cell id="1" start-col="1" start-row="6">
<bounding-box x1="287" x2="300" y1="641" y2="652"/>
<content>2.0</content>
<instruction instr-id="78" subinstr-id="0"/>
<instruction instr-id="78" subinstr-id="2"/>
<instruction instr-id="78" subinstr-id="4"/>
</cell>
<cell id="1" start-col="2" start-row="6">
<bounding-box x1="435" x2="458" y1="641" y2="652"/>
<content>7.0%</content>
<instruction instr-id="80" subinstr-id="0"/>
<instruction instr-id="80" subinstr-id="2"/>
<instruction instr-id="80" subinstr-id="4"/>
<instruction instr-id="80" subinstr-id="6"/>
</cell>
</region>
</table>
</document>

View File

@ -0,0 +1 @@
{"numExpectedTables":4,"numCorrectlyDetectedTables":4,"numErroneouslyDetectedTables":0,"expectedFailure":false}

View File

@ -0,0 +1,606 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="competition-entry-region-model.xsd" filename='bm_eu-007-reg.xml'>
<table id='1'>
<region id='1' page='1'>
<instruction instr-id='13'/>
<instruction instr-id='13' subinstr-id='2'/>
<instruction instr-id='13' subinstr-id='4'/>
<instruction instr-id='13' subinstr-id='6'/>
<instruction instr-id='13' subinstr-id='8'/>
<instruction instr-id='13' subinstr-id='10'/>
<instruction instr-id='13' subinstr-id='12'/>
<instruction instr-id='13' subinstr-id='14'/>
<instruction instr-id='13' subinstr-id='16'/>
<instruction instr-id='13' subinstr-id='18'/>
<instruction instr-id='13' subinstr-id='20'/>
<instruction instr-id='13' subinstr-id='22'/>
<instruction instr-id='13' subinstr-id='24'/>
<instruction instr-id='13' subinstr-id='26'/>
<instruction instr-id='13' subinstr-id='28'/>
<instruction instr-id='13' subinstr-id='30'/>
<instruction instr-id='13' subinstr-id='32'/>
<instruction instr-id='52'/>
<instruction instr-id='52' subinstr-id='2'/>
<instruction instr-id='52' subinstr-id='4'/>
<instruction instr-id='52' subinstr-id='6'/>
<instruction instr-id='52' subinstr-id='8'/>
<instruction instr-id='52' subinstr-id='10'/>
<instruction instr-id='52' subinstr-id='12'/>
<instruction instr-id='52' subinstr-id='14'/>
<instruction instr-id='52' subinstr-id='16'/>
<instruction instr-id='54'/>
<instruction instr-id='54' subinstr-id='2'/>
<instruction instr-id='56'/>
<instruction instr-id='56' subinstr-id='2'/>
<instruction instr-id='56' subinstr-id='4'/>
<instruction instr-id='56' subinstr-id='6'/>
<instruction instr-id='56' subinstr-id='8'/>
<instruction instr-id='90'/>
<instruction instr-id='92'/>
<instruction instr-id='92' subinstr-id='2'/>
<instruction instr-id='94'/>
<instruction instr-id='94' subinstr-id='2'/>
<instruction instr-id='96'/>
<instruction instr-id='96' subinstr-id='2'/>
<instruction instr-id='96' subinstr-id='4'/>
<instruction instr-id='131'/>
<instruction instr-id='131' subinstr-id='2'/>
<instruction instr-id='131' subinstr-id='4'/>
<instruction instr-id='131' subinstr-id='6'/>
<instruction instr-id='133'/>
<instruction instr-id='133' subinstr-id='2'/>
<instruction instr-id='133' subinstr-id='4'/>
<instruction instr-id='133' subinstr-id='6'/>
<instruction instr-id='133' subinstr-id='8'/>
<instruction instr-id='133' subinstr-id='10'/>
<instruction instr-id='133' subinstr-id='12'/>
<instruction instr-id='133' subinstr-id='14'/>
<instruction instr-id='133' subinstr-id='16'/>
<instruction instr-id='133' subinstr-id='18'/>
<instruction instr-id='167'/>
<instruction instr-id='167' subinstr-id='2'/>
<instruction instr-id='167' subinstr-id='4'/>
<instruction instr-id='167' subinstr-id='6'/>
<instruction instr-id='167' subinstr-id='8'/>
<instruction instr-id='167' subinstr-id='10'/>
<instruction instr-id='167' subinstr-id='12'/>
<instruction instr-id='167' subinstr-id='14'/>
<instruction instr-id='169'/>
<instruction instr-id='169' subinstr-id='2'/>
<instruction instr-id='169' subinstr-id='4'/>
<instruction instr-id='171'/>
<instruction instr-id='171' subinstr-id='2'/>
<instruction instr-id='171' subinstr-id='4'/>
<bounding-box x1='108' y1='685' x2='466' y2='750'/>
</region>
</table>
<table id='2'>
<region id='1' page='2'>
<instruction instr-id='142'/>
<instruction instr-id='142' subinstr-id='2'/>
<instruction instr-id='142' subinstr-id='4'/>
<instruction instr-id='144'/>
<instruction instr-id='144' subinstr-id='2'/>
<instruction instr-id='144' subinstr-id='4'/>
<instruction instr-id='144' subinstr-id='6'/>
<instruction instr-id='144' subinstr-id='8'/>
<instruction instr-id='144' subinstr-id='10'/>
<instruction instr-id='201'/>
<instruction instr-id='201' subinstr-id='2'/>
<instruction instr-id='201' subinstr-id='4'/>
<instruction instr-id='201' subinstr-id='6'/>
<instruction instr-id='201' subinstr-id='8'/>
<instruction instr-id='201' subinstr-id='10'/>
<instruction instr-id='201' subinstr-id='12'/>
<instruction instr-id='201' subinstr-id='14'/>
<instruction instr-id='201' subinstr-id='16'/>
<instruction instr-id='201' subinstr-id='18'/>
<instruction instr-id='201' subinstr-id='20'/>
<instruction instr-id='207'/>
<instruction instr-id='207' subinstr-id='2'/>
<instruction instr-id='207' subinstr-id='4'/>
<instruction instr-id='207' subinstr-id='6'/>
<instruction instr-id='207' subinstr-id='8'/>
<instruction instr-id='207' subinstr-id='10'/>
<instruction instr-id='207' subinstr-id='12'/>
<instruction instr-id='210'/>
<instruction instr-id='210' subinstr-id='2'/>
<instruction instr-id='210' subinstr-id='4'/>
<instruction instr-id='210' subinstr-id='6'/>
<instruction instr-id='210' subinstr-id='8'/>
<instruction instr-id='210' subinstr-id='10'/>
<bounding-box x1='96' y1='158' x2='492' y2='195'/>
</region>
</table>
<table id='3'>
<region id='1' page='3'>
<instruction instr-id='46'/>
<instruction instr-id='46' subinstr-id='2'/>
<instruction instr-id='46' subinstr-id='4'/>
<instruction instr-id='46' subinstr-id='6'/>
<instruction instr-id='46' subinstr-id='8'/>
<instruction instr-id='46' subinstr-id='10'/>
<instruction instr-id='46' subinstr-id='12'/>
<instruction instr-id='46' subinstr-id='14'/>
<instruction instr-id='46' subinstr-id='16'/>
<instruction instr-id='46' subinstr-id='18'/>
<instruction instr-id='46' subinstr-id='20'/>
<instruction instr-id='46' subinstr-id='22'/>
<instruction instr-id='46' subinstr-id='24'/>
<instruction instr-id='46' subinstr-id='26'/>
<instruction instr-id='77'/>
<instruction instr-id='77' subinstr-id='2'/>
<instruction instr-id='77' subinstr-id='4'/>
<instruction instr-id='77' subinstr-id='6'/>
<instruction instr-id='77' subinstr-id='8'/>
<instruction instr-id='77' subinstr-id='10'/>
<instruction instr-id='77' subinstr-id='12'/>
<instruction instr-id='77' subinstr-id='14'/>
<instruction instr-id='77' subinstr-id='16'/>
<instruction instr-id='77' subinstr-id='18'/>
<instruction instr-id='77' subinstr-id='20'/>
<instruction instr-id='79'/>
<instruction instr-id='79' subinstr-id='2'/>
<instruction instr-id='79' subinstr-id='4'/>
<instruction instr-id='79' subinstr-id='6'/>
<instruction instr-id='79' subinstr-id='8'/>
<instruction instr-id='81'/>
<instruction instr-id='81' subinstr-id='2'/>
<instruction instr-id='81' subinstr-id='4'/>
<instruction instr-id='81' subinstr-id='6'/>
<instruction instr-id='81' subinstr-id='8'/>
<bounding-box x1='105' y1='597' x2='475' y2='621'/>
</region>
</table>
<table id='4'>
<region id='1' page='3'>
<instruction instr-id='170'/>
<instruction instr-id='170' subinstr-id='2'/>
<instruction instr-id='170' subinstr-id='4'/>
<instruction instr-id='170' subinstr-id='6'/>
<instruction instr-id='170' subinstr-id='8'/>
<instruction instr-id='170' subinstr-id='10'/>
<instruction instr-id='170' subinstr-id='12'/>
<instruction instr-id='170' subinstr-id='14'/>
<instruction instr-id='170' subinstr-id='16'/>
<instruction instr-id='170' subinstr-id='18'/>
<instruction instr-id='174'/>
<instruction instr-id='174' subinstr-id='2'/>
<instruction instr-id='174' subinstr-id='4'/>
<instruction instr-id='174' subinstr-id='6'/>
<instruction instr-id='174' subinstr-id='8'/>
<instruction instr-id='178'/>
<instruction instr-id='178' subinstr-id='2'/>
<instruction instr-id='178' subinstr-id='4'/>
<instruction instr-id='178' subinstr-id='6'/>
<instruction instr-id='182'/>
<instruction instr-id='182' subinstr-id='2'/>
<instruction instr-id='182' subinstr-id='4'/>
<instruction instr-id='182' subinstr-id='6'/>
<instruction instr-id='182' subinstr-id='8'/>
<instruction instr-id='215'/>
<instruction instr-id='215' subinstr-id='2'/>
<instruction instr-id='215' subinstr-id='4'/>
<instruction instr-id='215' subinstr-id='6'/>
<instruction instr-id='215' subinstr-id='8'/>
<instruction instr-id='215' subinstr-id='10'/>
<instruction instr-id='221'/>
<instruction instr-id='221' subinstr-id='2'/>
<instruction instr-id='221' subinstr-id='4'/>
<instruction instr-id='221' subinstr-id='6'/>
<instruction instr-id='221' subinstr-id='8'/>
<instruction instr-id='221' subinstr-id='10'/>
<instruction instr-id='224'/>
<instruction instr-id='224' subinstr-id='2'/>
<instruction instr-id='253'/>
<instruction instr-id='253' subinstr-id='2'/>
<instruction instr-id='253' subinstr-id='4'/>
<instruction instr-id='253' subinstr-id='6'/>
<instruction instr-id='253' subinstr-id='8'/>
<instruction instr-id='257'/>
<instruction instr-id='257' subinstr-id='2'/>
<instruction instr-id='257' subinstr-id='4'/>
<instruction instr-id='257' subinstr-id='6'/>
<instruction instr-id='257' subinstr-id='8'/>
<instruction instr-id='260'/>
<instruction instr-id='260' subinstr-id='2'/>
<instruction instr-id='289'/>
<instruction instr-id='289' subinstr-id='2'/>
<instruction instr-id='289' subinstr-id='4'/>
<instruction instr-id='289' subinstr-id='6'/>
<instruction instr-id='289' subinstr-id='8'/>
<instruction instr-id='289' subinstr-id='10'/>
<instruction instr-id='289' subinstr-id='12'/>
<instruction instr-id='293'/>
<instruction instr-id='293' subinstr-id='2'/>
<instruction instr-id='293' subinstr-id='4'/>
<instruction instr-id='293' subinstr-id='6'/>
<instruction instr-id='293' subinstr-id='8'/>
<instruction instr-id='296'/>
<instruction instr-id='296' subinstr-id='2'/>
<instruction instr-id='325'/>
<instruction instr-id='325' subinstr-id='2'/>
<instruction instr-id='325' subinstr-id='4'/>
<instruction instr-id='325' subinstr-id='6'/>
<instruction instr-id='325' subinstr-id='8'/>
<instruction instr-id='329'/>
<instruction instr-id='329' subinstr-id='2'/>
<instruction instr-id='329' subinstr-id='4'/>
<instruction instr-id='329' subinstr-id='6'/>
<instruction instr-id='329' subinstr-id='8'/>
<instruction instr-id='332'/>
<instruction instr-id='334'/>
<instruction instr-id='362'/>
<instruction instr-id='364'/>
<instruction instr-id='364' subinstr-id='2'/>
<instruction instr-id='364' subinstr-id='4'/>
<instruction instr-id='364' subinstr-id='6'/>
<instruction instr-id='366'/>
<instruction instr-id='366' subinstr-id='2'/>
<instruction instr-id='366' subinstr-id='4'/>
<instruction instr-id='366' subinstr-id='6'/>
<instruction instr-id='394'/>
<instruction instr-id='394' subinstr-id='2'/>
<instruction instr-id='394' subinstr-id='4'/>
<instruction instr-id='394' subinstr-id='6'/>
<instruction instr-id='394' subinstr-id='8'/>
<instruction instr-id='394' subinstr-id='10'/>
<instruction instr-id='394' subinstr-id='12'/>
<instruction instr-id='396'/>
<instruction instr-id='398'/>
<instruction instr-id='426'/>
<instruction instr-id='426' subinstr-id='2'/>
<instruction instr-id='426' subinstr-id='4'/>
<instruction instr-id='426' subinstr-id='6'/>
<instruction instr-id='426' subinstr-id='8'/>
<instruction instr-id='428'/>
<instruction instr-id='428' subinstr-id='2'/>
<instruction instr-id='430'/>
<instruction instr-id='430' subinstr-id='2'/>
<instruction instr-id='457'/>
<instruction instr-id='457' subinstr-id='2'/>
<instruction instr-id='457' subinstr-id='4'/>
<instruction instr-id='457' subinstr-id='6'/>
<instruction instr-id='457' subinstr-id='8'/>
<instruction instr-id='459'/>
<instruction instr-id='459' subinstr-id='2'/>
<instruction instr-id='461'/>
<instruction instr-id='461' subinstr-id='2'/>
<instruction instr-id='489'/>
<instruction instr-id='489' subinstr-id='2'/>
<instruction instr-id='489' subinstr-id='4'/>
<instruction instr-id='489' subinstr-id='6'/>
<instruction instr-id='489' subinstr-id='8'/>
<instruction instr-id='489' subinstr-id='10'/>
<instruction instr-id='489' subinstr-id='12'/>
<instruction instr-id='489' subinstr-id='14'/>
<instruction instr-id='489' subinstr-id='16'/>
<instruction instr-id='489' subinstr-id='18'/>
<instruction instr-id='489' subinstr-id='20'/>
<instruction instr-id='489' subinstr-id='22'/>
<instruction instr-id='489' subinstr-id='24'/>
<instruction instr-id='489' subinstr-id='26'/>
<instruction instr-id='489' subinstr-id='28'/>
<instruction instr-id='489' subinstr-id='30'/>
<instruction instr-id='489' subinstr-id='32'/>
<instruction instr-id='489' subinstr-id='34'/>
<instruction instr-id='491'/>
<instruction instr-id='493'/>
<instruction instr-id='520'/>
<instruction instr-id='520' subinstr-id='2'/>
<instruction instr-id='520' subinstr-id='4'/>
<instruction instr-id='520' subinstr-id='6'/>
<instruction instr-id='520' subinstr-id='8'/>
<instruction instr-id='520' subinstr-id='10'/>
<instruction instr-id='522'/>
<instruction instr-id='524'/>
<bounding-box x1='92' y1='151' x2='493' y2='361'/>
</region>
</table>
<table id='5'>
<region id='1' page='5'>
<instruction instr-id='15'/>
<instruction instr-id='15' subinstr-id='2'/>
<instruction instr-id='15' subinstr-id='4'/>
<instruction instr-id='15' subinstr-id='6'/>
<instruction instr-id='15' subinstr-id='8'/>
<instruction instr-id='15' subinstr-id='10'/>
<instruction instr-id='15' subinstr-id='12'/>
<instruction instr-id='15' subinstr-id='14'/>
<instruction instr-id='15' subinstr-id='16'/>
<instruction instr-id='15' subinstr-id='18'/>
<instruction instr-id='15' subinstr-id='20'/>
<instruction instr-id='15' subinstr-id='22'/>
<instruction instr-id='15' subinstr-id='24'/>
<instruction instr-id='15' subinstr-id='26'/>
<instruction instr-id='15' subinstr-id='28'/>
<instruction instr-id='15' subinstr-id='30'/>
<instruction instr-id='15' subinstr-id='32'/>
<instruction instr-id='54'/>
<instruction instr-id='54' subinstr-id='2'/>
<instruction instr-id='54' subinstr-id='4'/>
<instruction instr-id='54' subinstr-id='6'/>
<instruction instr-id='54' subinstr-id='8'/>
<instruction instr-id='54' subinstr-id='10'/>
<instruction instr-id='54' subinstr-id='12'/>
<instruction instr-id='54' subinstr-id='14'/>
<instruction instr-id='54' subinstr-id='16'/>
<instruction instr-id='54' subinstr-id='18'/>
<instruction instr-id='54' subinstr-id='20'/>
<instruction instr-id='54' subinstr-id='22'/>
<instruction instr-id='56'/>
<bounding-box x1='163' y1='726' x2='430' y2='750'/>
</region>
</table>
<table id='6'>
<region id='1' page='5'>
<instruction instr-id='165'/>
<instruction instr-id='165' subinstr-id='2'/>
<instruction instr-id='165' subinstr-id='4'/>
<instruction instr-id='165' subinstr-id='6'/>
<instruction instr-id='165' subinstr-id='8'/>
<instruction instr-id='165' subinstr-id='10'/>
<instruction instr-id='165' subinstr-id='12'/>
<instruction instr-id='165' subinstr-id='14'/>
<instruction instr-id='165' subinstr-id='16'/>
<instruction instr-id='165' subinstr-id='18'/>
<instruction instr-id='165' subinstr-id='20'/>
<instruction instr-id='165' subinstr-id='22'/>
<instruction instr-id='165' subinstr-id='24'/>
<instruction instr-id='165' subinstr-id='26'/>
<instruction instr-id='165' subinstr-id='28'/>
<instruction instr-id='165' subinstr-id='30'/>
<instruction instr-id='165' subinstr-id='32'/>
<instruction instr-id='165' subinstr-id='34'/>
<instruction instr-id='165' subinstr-id='36'/>
<instruction instr-id='165' subinstr-id='38'/>
<instruction instr-id='204'/>
<instruction instr-id='204' subinstr-id='2'/>
<instruction instr-id='204' subinstr-id='4'/>
<instruction instr-id='204' subinstr-id='6'/>
<instruction instr-id='204' subinstr-id='8'/>
<instruction instr-id='204' subinstr-id='10'/>
<instruction instr-id='204' subinstr-id='12'/>
<instruction instr-id='204' subinstr-id='14'/>
<instruction instr-id='209'/>
<instruction instr-id='209' subinstr-id='2'/>
<instruction instr-id='209' subinstr-id='4'/>
<instruction instr-id='209' subinstr-id='6'/>
<instruction instr-id='209' subinstr-id='8'/>
<instruction instr-id='209' subinstr-id='10'/>
<instruction instr-id='209' subinstr-id='12'/>
<instruction instr-id='209' subinstr-id='14'/>
<instruction instr-id='209' subinstr-id='16'/>
<instruction instr-id='209' subinstr-id='18'/>
<instruction instr-id='209' subinstr-id='20'/>
<instruction instr-id='212'/>
<instruction instr-id='212' subinstr-id='2'/>
<instruction instr-id='212' subinstr-id='4'/>
<instruction instr-id='212' subinstr-id='6'/>
<instruction instr-id='212' subinstr-id='8'/>
<instruction instr-id='212' subinstr-id='10'/>
<instruction instr-id='212' subinstr-id='12'/>
<instruction instr-id='212' subinstr-id='14'/>
<instruction instr-id='212' subinstr-id='16'/>
<instruction instr-id='218'/>
<instruction instr-id='223'/>
<instruction instr-id='223' subinstr-id='2'/>
<instruction instr-id='223' subinstr-id='4'/>
<instruction instr-id='223' subinstr-id='6'/>
<instruction instr-id='223' subinstr-id='8'/>
<instruction instr-id='223' subinstr-id='10'/>
<instruction instr-id='228'/>
<instruction instr-id='228' subinstr-id='2'/>
<instruction instr-id='228' subinstr-id='4'/>
<instruction instr-id='228' subinstr-id='6'/>
<instruction instr-id='228' subinstr-id='8'/>
<instruction instr-id='228' subinstr-id='10'/>
<instruction instr-id='228' subinstr-id='12'/>
<instruction instr-id='228' subinstr-id='14'/>
<instruction instr-id='228' subinstr-id='16'/>
<instruction instr-id='232'/>
<instruction instr-id='232' subinstr-id='2'/>
<instruction instr-id='232' subinstr-id='4'/>
<instruction instr-id='232' subinstr-id='6'/>
<instruction instr-id='232' subinstr-id='8'/>
<instruction instr-id='232' subinstr-id='10'/>
<instruction instr-id='232' subinstr-id='12'/>
<instruction instr-id='235'/>
<instruction instr-id='235' subinstr-id='2'/>
<instruction instr-id='235' subinstr-id='4'/>
<instruction instr-id='235' subinstr-id='6'/>
<instruction instr-id='235' subinstr-id='8'/>
<instruction instr-id='235' subinstr-id='10'/>
<instruction instr-id='235' subinstr-id='12'/>
<instruction instr-id='235' subinstr-id='14'/>
<instruction instr-id='235' subinstr-id='16'/>
<instruction instr-id='269'/>
<instruction instr-id='269' subinstr-id='2'/>
<instruction instr-id='269' subinstr-id='4'/>
<instruction instr-id='273'/>
<instruction instr-id='273' subinstr-id='2'/>
<instruction instr-id='273' subinstr-id='4'/>
<instruction instr-id='273' subinstr-id='6'/>
<instruction instr-id='273' subinstr-id='8'/>
<instruction instr-id='273' subinstr-id='10'/>
<instruction instr-id='273' subinstr-id='12'/>
<instruction instr-id='273' subinstr-id='14'/>
<instruction instr-id='278'/>
<instruction instr-id='278' subinstr-id='2'/>
<instruction instr-id='278' subinstr-id='4'/>
<instruction instr-id='278' subinstr-id='6'/>
<instruction instr-id='278' subinstr-id='8'/>
<instruction instr-id='278' subinstr-id='10'/>
<instruction instr-id='278' subinstr-id='12'/>
<instruction instr-id='278' subinstr-id='14'/>
<instruction instr-id='284'/>
<instruction instr-id='284' subinstr-id='2'/>
<instruction instr-id='284' subinstr-id='4'/>
<instruction instr-id='284' subinstr-id='6'/>
<instruction instr-id='284' subinstr-id='8'/>
<instruction instr-id='284' subinstr-id='10'/>
<instruction instr-id='284' subinstr-id='12'/>
<instruction instr-id='284' subinstr-id='14'/>
<instruction instr-id='289'/>
<instruction instr-id='289' subinstr-id='2'/>
<instruction instr-id='289' subinstr-id='4'/>
<instruction instr-id='289' subinstr-id='6'/>
<instruction instr-id='289' subinstr-id='8'/>
<instruction instr-id='291'/>
<instruction instr-id='291' subinstr-id='2'/>
<instruction instr-id='291' subinstr-id='4'/>
<instruction instr-id='291' subinstr-id='6'/>
<instruction instr-id='291' subinstr-id='8'/>
<instruction instr-id='291' subinstr-id='10'/>
<instruction instr-id='291' subinstr-id='12'/>
<instruction instr-id='294'/>
<instruction instr-id='294' subinstr-id='2'/>
<instruction instr-id='294' subinstr-id='4'/>
<instruction instr-id='294' subinstr-id='6'/>
<instruction instr-id='294' subinstr-id='8'/>
<instruction instr-id='294' subinstr-id='10'/>
<instruction instr-id='294' subinstr-id='12'/>
<instruction instr-id='294' subinstr-id='14'/>
<instruction instr-id='297'/>
<instruction instr-id='297' subinstr-id='2'/>
<instruction instr-id='297' subinstr-id='4'/>
<instruction instr-id='297' subinstr-id='6'/>
<instruction instr-id='297' subinstr-id='8'/>
<instruction instr-id='297' subinstr-id='10'/>
<instruction instr-id='302'/>
<instruction instr-id='302' subinstr-id='2'/>
<instruction instr-id='302' subinstr-id='4'/>
<instruction instr-id='302' subinstr-id='6'/>
<instruction instr-id='302' subinstr-id='8'/>
<instruction instr-id='302' subinstr-id='10'/>
<instruction instr-id='302' subinstr-id='12'/>
<instruction instr-id='302' subinstr-id='14'/>
<instruction instr-id='302' subinstr-id='16'/>
<instruction instr-id='337'/>
<instruction instr-id='337' subinstr-id='2'/>
<instruction instr-id='337' subinstr-id='4'/>
<instruction instr-id='339'/>
<instruction instr-id='339' subinstr-id='2'/>
<instruction instr-id='339' subinstr-id='4'/>
<instruction instr-id='339' subinstr-id='6'/>
<instruction instr-id='339' subinstr-id='8'/>
<instruction instr-id='339' subinstr-id='10'/>
<instruction instr-id='374'/>
<instruction instr-id='374' subinstr-id='2'/>
<instruction instr-id='374' subinstr-id='4'/>
<instruction instr-id='374' subinstr-id='6'/>
<instruction instr-id='374' subinstr-id='8'/>
<instruction instr-id='374' subinstr-id='10'/>
<instruction instr-id='374' subinstr-id='12'/>
<instruction instr-id='374' subinstr-id='14'/>
<instruction instr-id='374' subinstr-id='16'/>
<instruction instr-id='374' subinstr-id='18'/>
<instruction instr-id='409'/>
<instruction instr-id='409' subinstr-id='2'/>
<instruction instr-id='409' subinstr-id='4'/>
<instruction instr-id='409' subinstr-id='6'/>
<instruction instr-id='409' subinstr-id='8'/>
<instruction instr-id='409' subinstr-id='10'/>
<instruction instr-id='409' subinstr-id='12'/>
<instruction instr-id='409' subinstr-id='14'/>
<instruction instr-id='409' subinstr-id='16'/>
<instruction instr-id='409' subinstr-id='18'/>
<instruction instr-id='409' subinstr-id='20'/>
<instruction instr-id='409' subinstr-id='22'/>
<instruction instr-id='409' subinstr-id='24'/>
<instruction instr-id='409' subinstr-id='26'/>
<instruction instr-id='409' subinstr-id='28'/>
<instruction instr-id='409' subinstr-id='30'/>
<instruction instr-id='409' subinstr-id='32'/>
<instruction instr-id='409' subinstr-id='34'/>
<instruction instr-id='443'/>
<instruction instr-id='443' subinstr-id='2'/>
<instruction instr-id='443' subinstr-id='4'/>
<instruction instr-id='443' subinstr-id='6'/>
<instruction instr-id='448'/>
<instruction instr-id='448' subinstr-id='2'/>
<instruction instr-id='448' subinstr-id='4'/>
<instruction instr-id='448' subinstr-id='6'/>
<instruction instr-id='448' subinstr-id='8'/>
<instruction instr-id='448' subinstr-id='10'/>
<instruction instr-id='448' subinstr-id='12'/>
<instruction instr-id='448' subinstr-id='14'/>
<instruction instr-id='448' subinstr-id='16'/>
<instruction instr-id='448' subinstr-id='18'/>
<instruction instr-id='448' subinstr-id='20'/>
<instruction instr-id='453'/>
<instruction instr-id='453' subinstr-id='2'/>
<instruction instr-id='453' subinstr-id='4'/>
<instruction instr-id='453' subinstr-id='6'/>
<instruction instr-id='453' subinstr-id='8'/>
<instruction instr-id='453' subinstr-id='10'/>
<instruction instr-id='453' subinstr-id='12'/>
<instruction instr-id='453' subinstr-id='14'/>
<instruction instr-id='453' subinstr-id='16'/>
<instruction instr-id='453' subinstr-id='18'/>
<instruction instr-id='453' subinstr-id='20'/>
<instruction instr-id='453' subinstr-id='22'/>
<instruction instr-id='458'/>
<instruction instr-id='458' subinstr-id='2'/>
<instruction instr-id='458' subinstr-id='4'/>
<instruction instr-id='458' subinstr-id='6'/>
<instruction instr-id='458' subinstr-id='8'/>
<instruction instr-id='458' subinstr-id='10'/>
<instruction instr-id='458' subinstr-id='12'/>
<instruction instr-id='458' subinstr-id='14'/>
<instruction instr-id='462'/>
<instruction instr-id='462' subinstr-id='2'/>
<instruction instr-id='462' subinstr-id='4'/>
<instruction instr-id='462' subinstr-id='6'/>
<instruction instr-id='462' subinstr-id='8'/>
<instruction instr-id='462' subinstr-id='10'/>
<instruction instr-id='462' subinstr-id='12'/>
<instruction instr-id='462' subinstr-id='14'/>
<instruction instr-id='466'/>
<instruction instr-id='466' subinstr-id='2'/>
<instruction instr-id='466' subinstr-id='4'/>
<instruction instr-id='466' subinstr-id='6'/>
<instruction instr-id='466' subinstr-id='8'/>
<instruction instr-id='466' subinstr-id='10'/>
<instruction instr-id='466' subinstr-id='12'/>
<instruction instr-id='466' subinstr-id='14'/>
<instruction instr-id='471'/>
<instruction instr-id='471' subinstr-id='2'/>
<instruction instr-id='471' subinstr-id='4'/>
<instruction instr-id='471' subinstr-id='6'/>
<instruction instr-id='471' subinstr-id='8'/>
<instruction instr-id='471' subinstr-id='10'/>
<instruction instr-id='477'/>
<instruction instr-id='477' subinstr-id='2'/>
<instruction instr-id='477' subinstr-id='4'/>
<instruction instr-id='477' subinstr-id='6'/>
<instruction instr-id='477' subinstr-id='8'/>
<instruction instr-id='477' subinstr-id='10'/>
<instruction instr-id='482'/>
<instruction instr-id='482' subinstr-id='2'/>
<instruction instr-id='482' subinstr-id='4'/>
<instruction instr-id='482' subinstr-id='6'/>
<instruction instr-id='482' subinstr-id='8'/>
<instruction instr-id='482' subinstr-id='10'/>
<instruction instr-id='482' subinstr-id='12'/>
<instruction instr-id='482' subinstr-id='14'/>
<instruction instr-id='482' subinstr-id='16'/>
<instruction instr-id='517'/>
<instruction instr-id='517' subinstr-id='2'/>
<instruction instr-id='517' subinstr-id='4'/>
<instruction instr-id='517' subinstr-id='6'/>
<instruction instr-id='517' subinstr-id='8'/>
<instruction instr-id='519'/>
<instruction instr-id='521'/>
<instruction instr-id='555'/>
<instruction instr-id='555' subinstr-id='2'/>
<instruction instr-id='555' subinstr-id='4'/>
<instruction instr-id='555' subinstr-id='6'/>
<instruction instr-id='555' subinstr-id='8'/>
<instruction instr-id='557'/>
<instruction instr-id='559'/>
<bounding-box x1='94' y1='172' x2='487' y2='445'/>
</region>
</table>
</document>

View File

@ -0,0 +1 @@
{"numExpectedTables":6,"numCorrectlyDetectedTables":6,"numErroneouslyDetectedTables":0,"expectedFailure":false}

View File

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="competition-entry-region-model.xsd" filename='bm_eu-008-reg.xml'>
<table id='1'>
<region id='1' page='1'>
<instruction instr-id='362'/>
<instruction instr-id='362' subinstr-id='2'/>
<instruction instr-id='362' subinstr-id='4'/>
<instruction instr-id='362' subinstr-id='6'/>
<instruction instr-id='362' subinstr-id='8'/>
<instruction instr-id='362' subinstr-id='10'/>
<instruction instr-id='362' subinstr-id='12'/>
<instruction instr-id='362' subinstr-id='14'/>
<instruction instr-id='362' subinstr-id='16'/>
<instruction instr-id='396'/>
<instruction instr-id='396' subinstr-id='2'/>
<instruction instr-id='396' subinstr-id='4'/>
<instruction instr-id='396' subinstr-id='6'/>
<instruction instr-id='431'/>
<instruction instr-id='431' subinstr-id='2'/>
<instruction instr-id='431' subinstr-id='4'/>
<instruction instr-id='431' subinstr-id='6'/>
<instruction instr-id='431' subinstr-id='8'/>
<instruction instr-id='431' subinstr-id='10'/>
<instruction instr-id='431' subinstr-id='12'/>
<instruction instr-id='431' subinstr-id='14'/>
<instruction instr-id='466'/>
<instruction instr-id='466' subinstr-id='2'/>
<instruction instr-id='466' subinstr-id='4'/>
<instruction instr-id='531'/>
<instruction instr-id='534'/>
<instruction instr-id='538'/>
<instruction instr-id='542'/>
<instruction instr-id='562'/>
<instruction instr-id='562' subinstr-id='2'/>
<instruction instr-id='562' subinstr-id='4'/>
<instruction instr-id='562' subinstr-id='6'/>
<instruction instr-id='565'/>
<instruction instr-id='569'/>
<instruction instr-id='573'/>
<instruction instr-id='592'/>
<instruction instr-id='596'/>
<instruction instr-id='600'/>
<instruction instr-id='604'/>
<instruction instr-id='623'/>
<instruction instr-id='626'/>
<instruction instr-id='630'/>
<instruction instr-id='634'/>
<instruction instr-id='653'/>
<instruction instr-id='653' subinstr-id='2'/>
<instruction instr-id='656'/>
<instruction instr-id='660'/>
<instruction instr-id='664'/>
<instruction instr-id='683'/>
<instruction instr-id='686'/>
<instruction instr-id='690'/>
<instruction instr-id='694'/>
<instruction instr-id='713'/>
<instruction instr-id='716'/>
<instruction instr-id='720'/>
<instruction instr-id='724'/>
<instruction instr-id='742'/>
<instruction instr-id='745'/>
<instruction instr-id='749'/>
<instruction instr-id='753'/>
<instruction instr-id='771'/>
<instruction instr-id='774'/>
<instruction instr-id='780'/>
<instruction instr-id='784'/>
<instruction instr-id='803'/>
<instruction instr-id='806'/>
<instruction instr-id='810'/>
<instruction instr-id='814'/>
<instruction instr-id='833'/>
<instruction instr-id='836'/>
<instruction instr-id='840'/>
<instruction instr-id='844'/>
<instruction instr-id='863'/>
<instruction instr-id='866'/>
<instruction instr-id='870'/>
<instruction instr-id='874'/>
<instruction instr-id='893'/>
<instruction instr-id='893' subinstr-id='2'/>
<instruction instr-id='901'/>
<instruction instr-id='924'/>
<instruction instr-id='924' subinstr-id='2'/>
<instruction instr-id='924' subinstr-id='4'/>
<instruction instr-id='927'/>
<instruction instr-id='931'/>
<instruction instr-id='935'/>
<bounding-box x1='106' y1='106' x2='470' y2='294'/>
</region>
</table>
</document>

View File

@ -0,0 +1,325 @@
<?xml version="1.0" encoding="UTF-8"?>
<document filename="bm_eu-008-str.xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="competition-entry-structure-model.xsd">
<table id="1">
<region col-increment="0" id="1" page="1" row-increment="0">
<cell id="1" start-col="0" start-row="0">
<bounding-box x1="106" x2="170" y1="287" y2="294"/>
<content>Country/Heading</content>
<instruction instr-id="362" subinstr-id="0"/>
<instruction instr-id="362" subinstr-id="2"/>
<instruction instr-id="362" subinstr-id="4"/>
<instruction instr-id="362" subinstr-id="6"/>
<instruction instr-id="362" subinstr-id="8"/>
<instruction instr-id="362" subinstr-id="10"/>
<instruction instr-id="362" subinstr-id="12"/>
<instruction instr-id="362" subinstr-id="14"/>
<instruction instr-id="362" subinstr-id="16"/>
</cell>
<cell id="1" start-col="1" start-row="0">
<bounding-box x1="196" x2="283" y1="287" y2="294"/>
<content>Cohesion Fund EURbn</content>
<instruction instr-id="396" subinstr-id="0"/>
<instruction instr-id="396" subinstr-id="2"/>
<instruction instr-id="396" subinstr-id="4"/>
<instruction instr-id="396" subinstr-id="6"/>
</cell>
<cell id="1" start-col="2" start-row="0">
<bounding-box x1="294" x2="398" y1="287" y2="294"/>
<content>ERDF Convergence EURbn</content>
<instruction instr-id="431" subinstr-id="0"/>
<instruction instr-id="431" subinstr-id="2"/>
<instruction instr-id="431" subinstr-id="4"/>
<instruction instr-id="431" subinstr-id="6"/>
<instruction instr-id="431" subinstr-id="8"/>
<instruction instr-id="431" subinstr-id="10"/>
<instruction instr-id="431" subinstr-id="12"/>
<instruction instr-id="431" subinstr-id="14"/>
</cell>
<cell id="1" start-col="3" start-row="0">
<bounding-box x1="413" x2="470" y1="287" y2="294"/>
<content>Total EURbn</content>
<instruction instr-id="466" subinstr-id="0"/>
<instruction instr-id="466" subinstr-id="2"/>
<instruction instr-id="466" subinstr-id="4"/>
</cell>
<cell id="1" start-col="0" start-row="1">
<bounding-box x1="106" x2="135" y1="273" y2="281"/>
<content>Bulgaria</content>
<instruction instr-id="531" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="1">
<bounding-box x1="196" x2="207" y1="273" y2="281"/>
<content>2.3</content>
<instruction instr-id="534" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="1">
<bounding-box x1="294" x2="305" y1="273" y2="281"/>
<content>3.2</content>
<instruction instr-id="538" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="1">
<bounding-box x1="413" x2="424" y1="273" y2="281"/>
<content>5.5</content>
<instruction instr-id="542" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="2">
<bounding-box x1="106" x2="131" y1="261" y2="269"/>
<content>Cyprus</content>
<instruction instr-id="562" subinstr-id="0"/>
<instruction instr-id="562" subinstr-id="2"/>
<instruction instr-id="562" subinstr-id="4"/>
<instruction instr-id="562" subinstr-id="6"/>
</cell>
<cell id="1" start-col="1" start-row="2">
<bounding-box x1="196" x2="212" y1="261" y2="269"/>
<content>0.21</content>
<instruction instr-id="565" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="2">
<bounding-box x1="294" x2="299" y1="261" y2="269"/>
<content>0</content>
<instruction instr-id="569" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="2">
<bounding-box x1="413" x2="429" y1="261" y2="269"/>
<content>0.21</content>
<instruction instr-id="573" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="3">
<bounding-box x1="106" x2="162" y1="248" y2="256"/>
<content>Czech Republic</content>
<instruction instr-id="592" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="3">
<bounding-box x1="196" x2="207" y1="248" y2="256"/>
<content>8.8</content>
<instruction instr-id="596" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="3">
<bounding-box x1="294" x2="310" y1="248" y2="256"/>
<content>13.4</content>
<instruction instr-id="600" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="3">
<bounding-box x1="413" x2="429" y1="248" y2="256"/>
<content>22.2</content>
<instruction instr-id="604" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="4">
<bounding-box x1="106" x2="132" y1="235" y2="243"/>
<content>Estonia</content>
<instruction instr-id="623" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="4">
<bounding-box x1="196" x2="207" y1="235" y2="243"/>
<content>1.1</content>
<instruction instr-id="626" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="4">
<bounding-box x1="294" x2="305" y1="235" y2="243"/>
<content>1.9</content>
<instruction instr-id="630" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="4">
<bounding-box x1="413" x2="424" y1="235" y2="243"/>
<content>3.0</content>
<instruction instr-id="634" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="5">
<bounding-box x1="106" x2="136" y1="222" y2="230"/>
<content>Hungary</content>
<instruction instr-id="653" subinstr-id="0"/>
<instruction instr-id="653" subinstr-id="2"/>
</cell>
<cell id="1" start-col="1" start-row="5">
<bounding-box x1="196" x2="207" y1="222" y2="230"/>
<content>8.6</content>
<instruction instr-id="656" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="5">
<bounding-box x1="294" x2="310" y1="222" y2="230"/>
<content>11.2</content>
<instruction instr-id="660" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="5">
<bounding-box x1="413" x2="429" y1="222" y2="230"/>
<content>19.8</content>
<instruction instr-id="664" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="6">
<bounding-box x1="106" x2="127" y1="210" y2="218"/>
<content>Latvia</content>
<instruction instr-id="683" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="6">
<bounding-box x1="196" x2="207" y1="210" y2="218"/>
<content>1.5</content>
<instruction instr-id="686" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="6">
<bounding-box x1="294" x2="305" y1="210" y2="218"/>
<content>2.4</content>
<instruction instr-id="690" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="6">
<bounding-box x1="413" x2="424" y1="210" y2="218"/>
<content>3.9</content>
<instruction instr-id="694" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="7">
<bounding-box x1="106" x2="138" y1="197" y2="205"/>
<content>Lithuania</content>
<instruction instr-id="713" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="7">
<bounding-box x1="196" x2="207" y1="197" y2="205"/>
<content>2.3</content>
<instruction instr-id="716" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="7">
<bounding-box x1="294" x2="305" y1="197" y2="205"/>
<content>3.4</content>
<instruction instr-id="720" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="7">
<bounding-box x1="413" x2="424" y1="197" y2="205"/>
<content>5.7</content>
<instruction instr-id="724" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="8">
<bounding-box x1="106" x2="125" y1="184" y2="192"/>
<content>Malta</content>
<instruction instr-id="742" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="8">
<bounding-box x1="196" x2="212" y1="184" y2="192"/>
<content>0.28</content>
<instruction instr-id="745" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="8">
<bounding-box x1="294" x2="310" y1="184" y2="192"/>
<content>0.44</content>
<instruction instr-id="749" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="8">
<bounding-box x1="413" x2="429" y1="184" y2="192"/>
<content>0.72</content>
<instruction instr-id="753" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="9">
<bounding-box x1="106" x2="131" y1="171" y2="179"/>
<content>Poland</content>
<instruction instr-id="771" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="9">
<bounding-box x1="196" x2="205" y1="171" y2="179"/>
<content>22</content>
<instruction instr-id="774" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="9">
<bounding-box x1="294" x2="303" y1="171" y2="179"/>
<content>33</content>
<instruction instr-id="780" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="9">
<bounding-box x1="413" x2="422" y1="171" y2="179"/>
<content>55</content>
<instruction instr-id="784" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="10">
<bounding-box x1="106" x2="138" y1="159" y2="167"/>
<content>Romania</content>
<instruction instr-id="803" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="10">
<bounding-box x1="196" x2="207" y1="159" y2="167"/>
<content>6.5</content>
<instruction instr-id="806" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="10">
<bounding-box x1="294" x2="299" y1="159" y2="167"/>
<content>9</content>
<instruction instr-id="810" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="10">
<bounding-box x1="413" x2="429" y1="159" y2="167"/>
<content>15.5</content>
<instruction instr-id="814" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="11">
<bounding-box x1="106" x2="136" y1="146" y2="154"/>
<content>Slovakia</content>
<instruction instr-id="833" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="11">
<bounding-box x1="196" x2="200" y1="146" y2="154"/>
<content>4</content>
<instruction instr-id="836" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="11">
<bounding-box x1="294" x2="299" y1="146" y2="154"/>
<content>6</content>
<instruction instr-id="840" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="11">
<bounding-box x1="413" x2="422" y1="146" y2="154"/>
<content>10</content>
<instruction instr-id="844" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="12">
<bounding-box x1="106" x2="136" y1="133" y2="141"/>
<content>Slovenia</content>
<instruction instr-id="863" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="12">
<bounding-box x1="196" x2="207" y1="133" y2="141"/>
<content>1.4</content>
<instruction instr-id="866" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="12">
<bounding-box x1="294" x2="305" y1="133" y2="141"/>
<content>1.9</content>
<instruction instr-id="870" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="12">
<bounding-box x1="413" x2="424" y1="133" y2="141"/>
<content>3.3</content>
<instruction instr-id="874" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="13">
<bounding-box x1="106" x2="181" y1="120" y2="128"/>
<content>Technical Assistance</content>
<instruction instr-id="893" subinstr-id="0"/>
<instruction instr-id="893" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="13">
<bounding-box x1="294" x2="310" y1="120" y2="128"/>
<content>0.87</content>
<instruction instr-id="901" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="14">
<bounding-box x1="106" x2="132" y1="106" y2="114"/>
<content>TOTAL</content>
<instruction instr-id="924" subinstr-id="0"/>
<instruction instr-id="924" subinstr-id="2"/>
<instruction instr-id="924" subinstr-id="4"/>
</cell>
<cell id="1" start-col="1" start-row="14">
<bounding-box x1="196" x2="216" y1="106" y2="114"/>
<content>58.99</content>
<instruction instr-id="927" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="2" start-row="14">
<bounding-box x1="294" x2="314" y1="106" y2="114"/>
<content>86.70</content>
<instruction instr-id="931" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="14">
<bounding-box x1="413" x2="437" y1="106" y2="114"/>
<content>145.69</content>
<instruction instr-id="935" subinstr-id="-1"/>
</cell>
</region>
</table>
</document>

View File

@ -0,0 +1 @@
{"numExpectedTables":1,"numCorrectlyDetectedTables":1,"numErroneouslyDetectedTables":0,"expectedFailure":false}

View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="competition-entry-region-model.xsd" filename='bm_eu-009-reg.xml'>
<table id='1'>
<region id='1' page='1'>
<instruction instr-id='107'/>
<instruction instr-id='107' subinstr-id='2'/>
<instruction instr-id='107' subinstr-id='4'/>
<instruction instr-id='148'/>
<instruction instr-id='179'/>
<instruction instr-id='218'/>
<instruction instr-id='218' subinstr-id='2'/>
<instruction instr-id='248'/>
<instruction instr-id='248' subinstr-id='2'/>
<instruction instr-id='278'/>
<instruction instr-id='278' subinstr-id='2'/>
<instruction instr-id='314'/>
<instruction instr-id='314' subinstr-id='2'/>
<instruction instr-id='345'/>
<instruction instr-id='349'/>
<instruction instr-id='353'/>
<instruction instr-id='353' subinstr-id='2'/>
<instruction instr-id='353' subinstr-id='4'/>
<instruction instr-id='353' subinstr-id='6'/>
<instruction instr-id='353' subinstr-id='8'/>
<instruction instr-id='353' subinstr-id='10'/>
<instruction instr-id='358'/>
<instruction instr-id='358' subinstr-id='2'/>
<instruction instr-id='364'/>
<instruction instr-id='367'/>
<instruction instr-id='367' subinstr-id='2'/>
<instruction instr-id='367' subinstr-id='4'/>
<instruction instr-id='367' subinstr-id='6'/>
<instruction instr-id='367' subinstr-id='8'/>
<instruction instr-id='371'/>
<instruction instr-id='371' subinstr-id='2'/>
<instruction instr-id='371' subinstr-id='4'/>
<instruction instr-id='371' subinstr-id='6'/>
<instruction instr-id='371' subinstr-id='8'/>
<instruction instr-id='410'/>
<instruction instr-id='414'/>
<instruction instr-id='414' subinstr-id='2'/>
<instruction instr-id='414' subinstr-id='4'/>
<instruction instr-id='418'/>
<instruction instr-id='418' subinstr-id='2'/>
<instruction instr-id='418' subinstr-id='4'/>
<instruction instr-id='418' subinstr-id='6'/>
<instruction instr-id='418' subinstr-id='8'/>
<instruction instr-id='424'/>
<instruction instr-id='455'/>
<instruction instr-id='458'/>
<instruction instr-id='458' subinstr-id='2'/>
<instruction instr-id='458' subinstr-id='4'/>
<instruction instr-id='461'/>
<instruction instr-id='466'/>
<instruction instr-id='466' subinstr-id='2'/>
<instruction instr-id='472'/>
<instruction instr-id='475'/>
<instruction instr-id='475' subinstr-id='2'/>
<instruction instr-id='475' subinstr-id='4'/>
<instruction instr-id='475' subinstr-id='6'/>
<instruction instr-id='475' subinstr-id='8'/>
<instruction instr-id='479'/>
<instruction instr-id='479' subinstr-id='2'/>
<instruction instr-id='479' subinstr-id='4'/>
<instruction instr-id='479' subinstr-id='6'/>
<instruction instr-id='479' subinstr-id='8'/>
<instruction instr-id='518'/>
<instruction instr-id='522'/>
<instruction instr-id='522' subinstr-id='2'/>
<instruction instr-id='522' subinstr-id='4'/>
<instruction instr-id='526'/>
<instruction instr-id='526' subinstr-id='2'/>
<instruction instr-id='526' subinstr-id='4'/>
<instruction instr-id='526' subinstr-id='6'/>
<instruction instr-id='526' subinstr-id='8'/>
<instruction instr-id='531'/>
<instruction instr-id='562'/>
<instruction instr-id='565'/>
<instruction instr-id='565' subinstr-id='2'/>
<instruction instr-id='569'/>
<instruction instr-id='569' subinstr-id='2'/>
<instruction instr-id='569' subinstr-id='4'/>
<instruction instr-id='569' subinstr-id='6'/>
<instruction instr-id='575'/>
<instruction instr-id='575' subinstr-id='2'/>
<instruction instr-id='581'/>
<instruction instr-id='584'/>
<instruction instr-id='584' subinstr-id='2'/>
<instruction instr-id='584' subinstr-id='4'/>
<instruction instr-id='584' subinstr-id='6'/>
<instruction instr-id='584' subinstr-id='8'/>
<instruction instr-id='588'/>
<instruction instr-id='588' subinstr-id='2'/>
<instruction instr-id='588' subinstr-id='4'/>
<instruction instr-id='588' subinstr-id='6'/>
<instruction instr-id='588' subinstr-id='8'/>
<instruction instr-id='626'/>
<instruction instr-id='630'/>
<instruction instr-id='632'/>
<instruction instr-id='632' subinstr-id='2'/>
<instruction instr-id='632' subinstr-id='4'/>
<instruction instr-id='632' subinstr-id='6'/>
<instruction instr-id='632' subinstr-id='8'/>
<instruction instr-id='632' subinstr-id='10'/>
<instruction instr-id='636'/>
<bounding-box x1='139' y1='295' x2='461' y2='527'/>
</region>
</table>
</document>

View File

@ -0,0 +1,224 @@
<?xml version="1.0" encoding="UTF-8"?>
<document filename="bm_eu-009-str.xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="competition-entry-structure-model.xsd">
<table id="1">
<region col-increment="0" id="1" page="1" row-increment="0">
<cell end-col="3" id="1" start-col="0" start-row="0">
<bounding-box x1="244" x2="356" y1="517" y2="527"/>
<content>Assignment Categories</content>
<instruction instr-id="107" subinstr-id="0"/>
<instruction instr-id="107" subinstr-id="2"/>
<instruction instr-id="107" subinstr-id="4"/>
</cell>
<cell end-col="1" id="1" start-col="0" start-row="1">
<bounding-box x1="164" x2="265" y1="505" y2="515"/>
<content>JASPERS Categories</content>
<instruction instr-id="148" subinstr-id="-1"/>
</cell>
<cell end-col="3" id="1" start-col="2" start-row="1">
<bounding-box x1="347" x2="415" y1="505" y2="515"/>
<content>EV Categories</content>
<instruction instr-id="179" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="2">
<bounding-box x1="139" x2="180" y1="493" y2="503"/>
<content>Category</content>
<instruction instr-id="218" subinstr-id="0"/>
<instruction instr-id="218" subinstr-id="2"/>
</cell>
<cell id="1" start-col="1" start-row="2">
<bounding-box x1="196" x2="246" y1="493" y2="503"/>
<content>Description</content>
<instruction instr-id="248" subinstr-id="0"/>
<instruction instr-id="248" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="2">
<bounding-box x1="302" x2="342" y1="493" y2="503"/>
<content>Category</content>
<instruction instr-id="278" subinstr-id="0"/>
<instruction instr-id="278" subinstr-id="2"/>
</cell>
<cell id="1" start-col="3" start-row="2">
<bounding-box x1="359" x2="409" y1="493" y2="503"/>
<content>Description</content>
<instruction instr-id="314" subinstr-id="0"/>
<instruction instr-id="314" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="3">
<bounding-box x1="139" x2="145" y1="481" y2="491"/>
<content>1</content>
<instruction instr-id="345" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="3">
<bounding-box x1="196" x2="283" y1="458" y2="491"/>
<content>Involvement “at the
beginning of project
preparation”</content>
<instruction instr-id="349" subinstr-id="-1"/>
<instruction instr-id="353" subinstr-id="0"/>
<instruction instr-id="353" subinstr-id="2"/>
<instruction instr-id="353" subinstr-id="4"/>
<instruction instr-id="353" subinstr-id="6"/>
<instruction instr-id="353" subinstr-id="8"/>
<instruction instr-id="353" subinstr-id="10"/>
<instruction instr-id="358" subinstr-id="0"/>
<instruction instr-id="358" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="3">
<bounding-box x1="302" x2="313" y1="481" y2="491"/>
<content>1a</content>
<instruction instr-id="364" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="3">
<bounding-box x1="359" x2="446" y1="470" y2="491"/>
<content>Influence on project
concept</content>
<instruction instr-id="367" subinstr-id="0"/>
<instruction instr-id="367" subinstr-id="2"/>
<instruction instr-id="367" subinstr-id="4"/>
<instruction instr-id="367" subinstr-id="6"/>
<instruction instr-id="367" subinstr-id="8"/>
<instruction instr-id="371" subinstr-id="0"/>
<instruction instr-id="371" subinstr-id="2"/>
<instruction instr-id="371" subinstr-id="4"/>
<instruction instr-id="371" subinstr-id="6"/>
<instruction instr-id="371" subinstr-id="8"/>
</cell>
<cell id="1" start-col="2" start-row="4">
<bounding-box x1="302" x2="313" y1="446" y2="456"/>
<content>1b</content>
<instruction instr-id="410" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="4">
<bounding-box x1="359" x2="461" y1="423" y2="456"/>
<content>No influence on project
concept (presentation
only)</content>
<instruction instr-id="414" subinstr-id="0"/>
<instruction instr-id="414" subinstr-id="2"/>
<instruction instr-id="414" subinstr-id="4"/>
<instruction instr-id="418" subinstr-id="0"/>
<instruction instr-id="418" subinstr-id="2"/>
<instruction instr-id="418" subinstr-id="4"/>
<instruction instr-id="418" subinstr-id="6"/>
<instruction instr-id="418" subinstr-id="8"/>
<instruction instr-id="424" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="5">
<bounding-box x1="139" x2="145" y1="411" y2="421"/>
<content>2</content>
<instruction instr-id="455" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="5">
<bounding-box x1="196" x2="284" y1="388" y2="421"/>
<content>Involvement “during
the feasibility study
preparation”</content>
<instruction instr-id="458" subinstr-id="0"/>
<instruction instr-id="458" subinstr-id="2"/>
<instruction instr-id="458" subinstr-id="4"/>
<instruction instr-id="461" subinstr-id="-1"/>
<instruction instr-id="466" subinstr-id="0"/>
<instruction instr-id="466" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="5">
<bounding-box x1="302" x2="313" y1="411" y2="421"/>
<content>2a</content>
<instruction instr-id="472" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="5">
<bounding-box x1="359" x2="446" y1="400" y2="421"/>
<content>Influence on project
concept</content>
<instruction instr-id="475" subinstr-id="0"/>
<instruction instr-id="475" subinstr-id="2"/>
<instruction instr-id="475" subinstr-id="4"/>
<instruction instr-id="475" subinstr-id="6"/>
<instruction instr-id="475" subinstr-id="8"/>
<instruction instr-id="479" subinstr-id="0"/>
<instruction instr-id="479" subinstr-id="2"/>
<instruction instr-id="479" subinstr-id="4"/>
<instruction instr-id="479" subinstr-id="6"/>
<instruction instr-id="479" subinstr-id="8"/>
</cell>
<cell id="1" start-col="2" start-row="6">
<bounding-box x1="302" x2="313" y1="376" y2="386"/>
<content>2b</content>
<instruction instr-id="518" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="6">
<bounding-box x1="359" x2="461" y1="353" y2="386"/>
<content>No influence on project
concept (presentation
only)</content>
<instruction instr-id="522" subinstr-id="0"/>
<instruction instr-id="522" subinstr-id="2"/>
<instruction instr-id="522" subinstr-id="4"/>
<instruction instr-id="526" subinstr-id="0"/>
<instruction instr-id="526" subinstr-id="2"/>
<instruction instr-id="526" subinstr-id="4"/>
<instruction instr-id="526" subinstr-id="6"/>
<instruction instr-id="526" subinstr-id="8"/>
<instruction instr-id="531" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="7">
<bounding-box x1="139" x2="145" y1="341" y2="351"/>
<content>3</content>
<instruction instr-id="562" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="7">
<bounding-box x1="196" x2="277" y1="318" y2="351"/>
<content>Involvement “after
draft application is
prepared”</content>
<instruction instr-id="565" subinstr-id="0"/>
<instruction instr-id="565" subinstr-id="2"/>
<instruction instr-id="569" subinstr-id="0"/>
<instruction instr-id="569" subinstr-id="2"/>
<instruction instr-id="569" subinstr-id="4"/>
<instruction instr-id="569" subinstr-id="6"/>
<instruction instr-id="575" subinstr-id="0"/>
<instruction instr-id="575" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="7">
<bounding-box x1="302" x2="313" y1="341" y2="351"/>
<content>3a</content>
<instruction instr-id="581" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="7">
<bounding-box x1="359" x2="446" y1="330" y2="351"/>
<content>Influence on project
concept</content>
<instruction instr-id="584" subinstr-id="0"/>
<instruction instr-id="584" subinstr-id="2"/>
<instruction instr-id="584" subinstr-id="4"/>
<instruction instr-id="584" subinstr-id="6"/>
<instruction instr-id="584" subinstr-id="8"/>
<instruction instr-id="588" subinstr-id="0"/>
<instruction instr-id="588" subinstr-id="2"/>
<instruction instr-id="588" subinstr-id="4"/>
<instruction instr-id="588" subinstr-id="6"/>
<instruction instr-id="588" subinstr-id="8"/>
</cell>
<cell id="1" start-col="2" start-row="8">
<bounding-box x1="302" x2="313" y1="306" y2="317"/>
<content>3b</content>
<instruction instr-id="626" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="8">
<bounding-box x1="359" x2="441" y1="295" y2="317"/>
<content>Other presentation
issues</content>
<instruction instr-id="630" subinstr-id="-1"/>
<instruction instr-id="632" subinstr-id="0"/>
<instruction instr-id="632" subinstr-id="2"/>
<instruction instr-id="632" subinstr-id="4"/>
<instruction instr-id="632" subinstr-id="6"/>
<instruction instr-id="632" subinstr-id="8"/>
<instruction instr-id="632" subinstr-id="10"/>
<instruction instr-id="636" subinstr-id="-1"/>
</cell>
</region>
</table>
</document>

View File

@ -0,0 +1 @@
{"numExpectedTables":1,"numCorrectlyDetectedTables":1,"numErroneouslyDetectedTables":0,"expectedFailure":false}

View File

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="competition-entry-region-model.xsd" filename='bm_eu-009-reg.xml'>
<table id='1'>
<region id='1' page='1'>
<instruction instr-id='148'/>
<instruction instr-id='179'/>
<instruction instr-id='218'/>
<instruction instr-id='218' subinstr-id='2'/>
<instruction instr-id='248'/>
<instruction instr-id='248' subinstr-id='2'/>
<instruction instr-id='278'/>
<instruction instr-id='278' subinstr-id='2'/>
<instruction instr-id='314'/>
<instruction instr-id='314' subinstr-id='2'/>
<instruction instr-id='345'/>
<instruction instr-id='349'/>
<instruction instr-id='353'/>
<instruction instr-id='353' subinstr-id='2'/>
<instruction instr-id='353' subinstr-id='4'/>
<instruction instr-id='353' subinstr-id='6'/>
<instruction instr-id='353' subinstr-id='8'/>
<instruction instr-id='353' subinstr-id='10'/>
<instruction instr-id='358'/>
<instruction instr-id='358' subinstr-id='2'/>
<instruction instr-id='364'/>
<instruction instr-id='367'/>
<instruction instr-id='367' subinstr-id='2'/>
<instruction instr-id='367' subinstr-id='4'/>
<instruction instr-id='367' subinstr-id='6'/>
<instruction instr-id='367' subinstr-id='8'/>
<instruction instr-id='371'/>
<instruction instr-id='371' subinstr-id='2'/>
<instruction instr-id='371' subinstr-id='4'/>
<instruction instr-id='371' subinstr-id='6'/>
<instruction instr-id='371' subinstr-id='8'/>
<instruction instr-id='410'/>
<instruction instr-id='414'/>
<instruction instr-id='414' subinstr-id='2'/>
<instruction instr-id='414' subinstr-id='4'/>
<instruction instr-id='418'/>
<instruction instr-id='418' subinstr-id='2'/>
<instruction instr-id='418' subinstr-id='4'/>
<instruction instr-id='418' subinstr-id='6'/>
<instruction instr-id='418' subinstr-id='8'/>
<instruction instr-id='424'/>
<instruction instr-id='455'/>
<instruction instr-id='458'/>
<instruction instr-id='458' subinstr-id='2'/>
<instruction instr-id='458' subinstr-id='4'/>
<instruction instr-id='461'/>
<instruction instr-id='466'/>
<instruction instr-id='466' subinstr-id='2'/>
<instruction instr-id='472'/>
<instruction instr-id='475'/>
<instruction instr-id='475' subinstr-id='2'/>
<instruction instr-id='475' subinstr-id='4'/>
<instruction instr-id='475' subinstr-id='6'/>
<instruction instr-id='475' subinstr-id='8'/>
<instruction instr-id='479'/>
<instruction instr-id='479' subinstr-id='2'/>
<instruction instr-id='479' subinstr-id='4'/>
<instruction instr-id='479' subinstr-id='6'/>
<instruction instr-id='479' subinstr-id='8'/>
<instruction instr-id='518'/>
<instruction instr-id='522'/>
<instruction instr-id='522' subinstr-id='2'/>
<instruction instr-id='522' subinstr-id='4'/>
<instruction instr-id='526'/>
<instruction instr-id='526' subinstr-id='2'/>
<instruction instr-id='526' subinstr-id='4'/>
<instruction instr-id='526' subinstr-id='6'/>
<instruction instr-id='526' subinstr-id='8'/>
<instruction instr-id='531'/>
<instruction instr-id='562'/>
<instruction instr-id='565'/>
<instruction instr-id='565' subinstr-id='2'/>
<instruction instr-id='569'/>
<instruction instr-id='569' subinstr-id='2'/>
<instruction instr-id='569' subinstr-id='4'/>
<instruction instr-id='569' subinstr-id='6'/>
<instruction instr-id='575'/>
<instruction instr-id='575' subinstr-id='2'/>
<instruction instr-id='581'/>
<instruction instr-id='584'/>
<instruction instr-id='584' subinstr-id='2'/>
<instruction instr-id='584' subinstr-id='4'/>
<instruction instr-id='584' subinstr-id='6'/>
<instruction instr-id='584' subinstr-id='8'/>
<instruction instr-id='588'/>
<instruction instr-id='588' subinstr-id='2'/>
<instruction instr-id='588' subinstr-id='4'/>
<instruction instr-id='588' subinstr-id='6'/>
<instruction instr-id='588' subinstr-id='8'/>
<instruction instr-id='626'/>
<instruction instr-id='630'/>
<instruction instr-id='632'/>
<instruction instr-id='632' subinstr-id='2'/>
<instruction instr-id='632' subinstr-id='4'/>
<instruction instr-id='632' subinstr-id='6'/>
<instruction instr-id='632' subinstr-id='8'/>
<instruction instr-id='632' subinstr-id='10'/>
<instruction instr-id='636'/>
<bounding-box x1='139' y1='295' x2='461' y2='515'/>
</region>
</table>
</document>

View File

@ -0,0 +1,217 @@
<?xml version="1.0" encoding="UTF-8"?>
<document filename="bm_eu-009-str.xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="competition-entry-structure-model.xsd">
<table id="1">
<region col-increment="0" id="1" page="1" row-increment="-1">
<cell end-col="1" id="1" start-col="0" start-row="1">
<bounding-box x1="164" x2="265" y1="505" y2="515"/>
<content>JASPERS Categories</content>
<instruction instr-id="148" subinstr-id="-1"/>
</cell>
<cell end-col="3" id="1" start-col="2" start-row="1">
<bounding-box x1="347" x2="415" y1="505" y2="515"/>
<content>EV Categories</content>
<instruction instr-id="179" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="2">
<bounding-box x1="139" x2="180" y1="493" y2="503"/>
<content>Category</content>
<instruction instr-id="218" subinstr-id="0"/>
<instruction instr-id="218" subinstr-id="2"/>
</cell>
<cell id="1" start-col="1" start-row="2">
<bounding-box x1="196" x2="246" y1="493" y2="503"/>
<content>Description</content>
<instruction instr-id="248" subinstr-id="0"/>
<instruction instr-id="248" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="2">
<bounding-box x1="302" x2="342" y1="493" y2="503"/>
<content>Category</content>
<instruction instr-id="278" subinstr-id="0"/>
<instruction instr-id="278" subinstr-id="2"/>
</cell>
<cell id="1" start-col="3" start-row="2">
<bounding-box x1="359" x2="409" y1="493" y2="503"/>
<content>Description</content>
<instruction instr-id="314" subinstr-id="0"/>
<instruction instr-id="314" subinstr-id="2"/>
</cell>
<cell id="1" start-col="0" start-row="3">
<bounding-box x1="139" x2="145" y1="481" y2="491"/>
<content>1</content>
<instruction instr-id="345" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="3">
<bounding-box x1="196" x2="283" y1="458" y2="491"/>
<content>Involvement “at the
beginning of project
preparation”</content>
<instruction instr-id="349" subinstr-id="-1"/>
<instruction instr-id="353" subinstr-id="0"/>
<instruction instr-id="353" subinstr-id="2"/>
<instruction instr-id="353" subinstr-id="4"/>
<instruction instr-id="353" subinstr-id="6"/>
<instruction instr-id="353" subinstr-id="8"/>
<instruction instr-id="353" subinstr-id="10"/>
<instruction instr-id="358" subinstr-id="0"/>
<instruction instr-id="358" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="3">
<bounding-box x1="302" x2="313" y1="481" y2="491"/>
<content>1a</content>
<instruction instr-id="364" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="3">
<bounding-box x1="359" x2="446" y1="470" y2="491"/>
<content>Influence on project
concept</content>
<instruction instr-id="367" subinstr-id="0"/>
<instruction instr-id="367" subinstr-id="2"/>
<instruction instr-id="367" subinstr-id="4"/>
<instruction instr-id="367" subinstr-id="6"/>
<instruction instr-id="367" subinstr-id="8"/>
<instruction instr-id="371" subinstr-id="0"/>
<instruction instr-id="371" subinstr-id="2"/>
<instruction instr-id="371" subinstr-id="4"/>
<instruction instr-id="371" subinstr-id="6"/>
<instruction instr-id="371" subinstr-id="8"/>
</cell>
<cell id="1" start-col="2" start-row="4">
<bounding-box x1="302" x2="313" y1="446" y2="456"/>
<content>1b</content>
<instruction instr-id="410" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="4">
<bounding-box x1="359" x2="461" y1="423" y2="456"/>
<content>No influence on project
concept (presentation
only)</content>
<instruction instr-id="414" subinstr-id="0"/>
<instruction instr-id="414" subinstr-id="2"/>
<instruction instr-id="414" subinstr-id="4"/>
<instruction instr-id="418" subinstr-id="0"/>
<instruction instr-id="418" subinstr-id="2"/>
<instruction instr-id="418" subinstr-id="4"/>
<instruction instr-id="418" subinstr-id="6"/>
<instruction instr-id="418" subinstr-id="8"/>
<instruction instr-id="424" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="5">
<bounding-box x1="139" x2="145" y1="411" y2="421"/>
<content>2</content>
<instruction instr-id="455" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="5">
<bounding-box x1="196" x2="284" y1="388" y2="421"/>
<content>Involvement “during
the feasibility study
preparation”</content>
<instruction instr-id="458" subinstr-id="0"/>
<instruction instr-id="458" subinstr-id="2"/>
<instruction instr-id="458" subinstr-id="4"/>
<instruction instr-id="461" subinstr-id="-1"/>
<instruction instr-id="466" subinstr-id="0"/>
<instruction instr-id="466" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="5">
<bounding-box x1="302" x2="313" y1="411" y2="421"/>
<content>2a</content>
<instruction instr-id="472" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="5">
<bounding-box x1="359" x2="446" y1="400" y2="421"/>
<content>Influence on project
concept</content>
<instruction instr-id="475" subinstr-id="0"/>
<instruction instr-id="475" subinstr-id="2"/>
<instruction instr-id="475" subinstr-id="4"/>
<instruction instr-id="475" subinstr-id="6"/>
<instruction instr-id="475" subinstr-id="8"/>
<instruction instr-id="479" subinstr-id="0"/>
<instruction instr-id="479" subinstr-id="2"/>
<instruction instr-id="479" subinstr-id="4"/>
<instruction instr-id="479" subinstr-id="6"/>
<instruction instr-id="479" subinstr-id="8"/>
</cell>
<cell id="1" start-col="2" start-row="6">
<bounding-box x1="302" x2="313" y1="376" y2="386"/>
<content>2b</content>
<instruction instr-id="518" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="6">
<bounding-box x1="359" x2="461" y1="353" y2="386"/>
<content>No influence on project
concept (presentation
only)</content>
<instruction instr-id="522" subinstr-id="0"/>
<instruction instr-id="522" subinstr-id="2"/>
<instruction instr-id="522" subinstr-id="4"/>
<instruction instr-id="526" subinstr-id="0"/>
<instruction instr-id="526" subinstr-id="2"/>
<instruction instr-id="526" subinstr-id="4"/>
<instruction instr-id="526" subinstr-id="6"/>
<instruction instr-id="526" subinstr-id="8"/>
<instruction instr-id="531" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="0" start-row="7">
<bounding-box x1="139" x2="145" y1="341" y2="351"/>
<content>3</content>
<instruction instr-id="562" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="1" start-row="7">
<bounding-box x1="196" x2="277" y1="318" y2="351"/>
<content>Involvement “after
draft application is
prepared”</content>
<instruction instr-id="565" subinstr-id="0"/>
<instruction instr-id="565" subinstr-id="2"/>
<instruction instr-id="569" subinstr-id="0"/>
<instruction instr-id="569" subinstr-id="2"/>
<instruction instr-id="569" subinstr-id="4"/>
<instruction instr-id="569" subinstr-id="6"/>
<instruction instr-id="575" subinstr-id="0"/>
<instruction instr-id="575" subinstr-id="2"/>
</cell>
<cell id="1" start-col="2" start-row="7">
<bounding-box x1="302" x2="313" y1="341" y2="351"/>
<content>3a</content>
<instruction instr-id="581" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="7">
<bounding-box x1="359" x2="446" y1="330" y2="351"/>
<content>Influence on project
concept</content>
<instruction instr-id="584" subinstr-id="0"/>
<instruction instr-id="584" subinstr-id="2"/>
<instruction instr-id="584" subinstr-id="4"/>
<instruction instr-id="584" subinstr-id="6"/>
<instruction instr-id="584" subinstr-id="8"/>
<instruction instr-id="588" subinstr-id="0"/>
<instruction instr-id="588" subinstr-id="2"/>
<instruction instr-id="588" subinstr-id="4"/>
<instruction instr-id="588" subinstr-id="6"/>
<instruction instr-id="588" subinstr-id="8"/>
</cell>
<cell id="1" start-col="2" start-row="8">
<bounding-box x1="302" x2="313" y1="306" y2="317"/>
<content>3b</content>
<instruction instr-id="626" subinstr-id="-1"/>
</cell>
<cell id="1" start-col="3" start-row="8">
<bounding-box x1="359" x2="441" y1="295" y2="317"/>
<content>Other presentation
issues</content>
<instruction instr-id="630" subinstr-id="-1"/>
<instruction instr-id="632" subinstr-id="0"/>
<instruction instr-id="632" subinstr-id="2"/>
<instruction instr-id="632" subinstr-id="4"/>
<instruction instr-id="632" subinstr-id="6"/>
<instruction instr-id="632" subinstr-id="8"/>
<instruction instr-id="632" subinstr-id="10"/>
<instruction instr-id="636" subinstr-id="-1"/>
</cell>
</region>
</table>
</document>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="competition-entry-region-model.xsd" filename='bm_eu-010-reg.xml'>
<table id='1'>
<region id='1' page='1'>
<instruction instr-id='128'/>
<instruction instr-id='128' subinstr-id='2'/>
<instruction instr-id='128' subinstr-id='4'/>
<instruction instr-id='163'/>
<instruction instr-id='177'/>
<instruction instr-id='177' subinstr-id='2'/>
<instruction instr-id='177' subinstr-id='4'/>
<instruction instr-id='177' subinstr-id='6'/>
<instruction instr-id='198'/>
<instruction instr-id='204'/>
<instruction instr-id='221'/>
<instruction instr-id='227'/>
<instruction instr-id='244'/>
<instruction instr-id='244' subinstr-id='2'/>
<instruction instr-id='244' subinstr-id='4'/>
<instruction instr-id='250'/>
<instruction instr-id='267'/>
<instruction instr-id='273'/>
<instruction instr-id='289'/>
<instruction instr-id='289' subinstr-id='2'/>
<instruction instr-id='294'/>
<instruction instr-id='310'/>
<instruction instr-id='315'/>
<instruction instr-id='332'/>
<instruction instr-id='332' subinstr-id='2'/>
<instruction instr-id='338'/>
<instruction instr-id='355'/>
<instruction instr-id='361'/>
<instruction instr-id='377'/>
<instruction instr-id='377' subinstr-id='2'/>
<instruction instr-id='382'/>
<instruction instr-id='399'/>
<instruction instr-id='402'/>
<bounding-box x1='216' y1='512' x2='376' y2='659'/>
</region>
</table>
</document>

View File

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8"?>
<document filename="bm_eu-010-str.xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="competition-entry-structure-model.xsd">
<table id="1">
<region col-increment="0" id="1" page="1" row-increment="0">
<cell end-col="0" end-row="0" id="1" start-col="0" start-row="0">
<bounding-box x1="216" x2="288" y1="649" y2="659"/>
<content>FEMIP Country</content>
<instruction instr-id="128" subinstr-id="0"/>
<instruction instr-id="128" subinstr-id="2"/>
<instruction instr-id="128" subinstr-id="4"/>
</cell>
<cell end-col="1" end-row="0" id="1" start-col="1" start-row="0">
<bounding-box x1="320" x2="376" y1="637" y2="659"/>
<content>Signed TA
(EURm)</content>
<instruction instr-id="163" subinstr-id="-1"/>
<instruction instr-id="177" subinstr-id="0"/>
<instruction instr-id="177" subinstr-id="2"/>
<instruction instr-id="177" subinstr-id="4"/>
<instruction instr-id="177" subinstr-id="6"/>
</cell>
<cell end-col="0" end-row="1" id="1" start-col="0" start-row="1">
<bounding-box x1="216" x2="247" y1="625" y2="635"/>
<content>Algeria</content>
<instruction instr-id="198" subinstr-id="-1"/>
</cell>
<cell end-col="1" end-row="1" id="1" start-col="1" start-row="1">
<bounding-box x1="356" x2="376" y1="625" y2="635"/>
<content>6.19</content>
<instruction instr-id="204" subinstr-id="-1"/>
</cell>
<cell end-col="0" end-row="2" id="1" start-col="0" start-row="2">
<bounding-box x1="216" x2="242" y1="613" y2="623"/>
<content>Egypt</content>
<instruction instr-id="221" subinstr-id="-1"/>
</cell>
<cell end-col="1" end-row="2" id="1" start-col="1" start-row="2">
<bounding-box x1="356" x2="376" y1="612" y2="623"/>
<content>6.60</content>
<instruction instr-id="227" subinstr-id="-1"/>
</cell>
<cell end-col="0" end-row="3" id="1" start-col="0" start-row="3">
<bounding-box x1="216" x2="300" y1="600" y2="610"/>
<content>Gaza &amp; West Bank</content>
<instruction instr-id="244" subinstr-id="0"/>
<instruction instr-id="244" subinstr-id="2"/>
<instruction instr-id="244" subinstr-id="4"/>
</cell>
<cell end-col="1" end-row="3" id="1" start-col="1" start-row="3">
<bounding-box x1="356" x2="376" y1="600" y2="610"/>
<content>2.60</content>
<instruction instr-id="250" subinstr-id="-1"/>
</cell>
<cell end-col="0" end-row="4" id="1" start-col="0" start-row="4">
<bounding-box x1="216" x2="247" y1="588" y2="598"/>
<content>Jordan</content>
<instruction instr-id="267" subinstr-id="-1"/>
</cell>
<cell end-col="1" end-row="4" id="1" start-col="1" start-row="4">
<bounding-box x1="356" x2="376" y1="587" y2="597"/>
<content>4.20</content>
<instruction instr-id="273" subinstr-id="-1"/>
</cell>
<cell end-col="0" end-row="5" id="1" start-col="0" start-row="5">
<bounding-box x1="216" x2="255" y1="575" y2="585"/>
<content>Lebanon</content>
<instruction instr-id="289" subinstr-id="0"/>
<instruction instr-id="289" subinstr-id="2"/>
</cell>
<cell end-col="1" end-row="5" id="1" start-col="1" start-row="5">
<bounding-box x1="356" x2="376" y1="574" y2="585"/>
<content>2.57</content>
<instruction instr-id="294" subinstr-id="-1"/>
</cell>
<cell end-col="0" end-row="6" id="1" start-col="0" start-row="6">
<bounding-box x1="216" x2="254" y1="562" y2="572"/>
<content>Morocco</content>
<instruction instr-id="310" subinstr-id="-1"/>
</cell>
<cell end-col="1" end-row="6" id="1" start-col="1" start-row="6">
<bounding-box x1="350" x2="376" y1="562" y2="572"/>
<content>21.09</content>
<instruction instr-id="315" subinstr-id="-1"/>
</cell>
<cell end-col="0" end-row="7" id="1" start-col="0" start-row="7">
<bounding-box x1="216" x2="255" y1="550" y2="560"/>
<content>Regional</content>
<instruction instr-id="332" subinstr-id="0"/>
<instruction instr-id="332" subinstr-id="2"/>
</cell>
<cell end-col="1" end-row="7" id="1" start-col="1" start-row="7">
<bounding-box x1="356" x2="376" y1="549" y2="560"/>
<content>7.29</content>
<instruction instr-id="338" subinstr-id="-1"/>
</cell>
<cell end-col="0" end-row="8" id="1" start-col="0" start-row="8">
<bounding-box x1="216" x2="239" y1="537" y2="547"/>
<content>Syria</content>
<instruction instr-id="355" subinstr-id="-1"/>
</cell>
<cell end-col="1" end-row="8" id="1" start-col="1" start-row="8">
<bounding-box x1="350" x2="376" y1="537" y2="547"/>
<content>33.42</content>
<instruction instr-id="361" subinstr-id="-1"/>
</cell>
<cell end-col="0" end-row="9" id="1" start-col="0" start-row="9">
<bounding-box x1="216" x2="248" y1="525" y2="535"/>
<content>Tunisia</content>
<instruction instr-id="377" subinstr-id="0"/>
<instruction instr-id="377" subinstr-id="2"/>
</cell>
<cell end-col="1" end-row="9" id="1" start-col="1" start-row="9">
<bounding-box x1="350" x2="376" y1="524" y2="535"/>
<content>14.50</content>
<instruction instr-id="382" subinstr-id="-1"/>
</cell>
<cell end-col="0" end-row="10" id="1" start-col="0" start-row="10">
<bounding-box x1="216" x2="240" y1="512" y2="522"/>
<content>Total</content>
<instruction instr-id="399" subinstr-id="-1"/>
</cell>
<cell end-col="1" end-row="10" id="1" start-col="1" start-row="10">
<bounding-box x1="351" x2="376" y1="512" y2="522"/>
<content>98.46</content>
<instruction instr-id="402" subinstr-id="-1"/>
</cell>
</region>
</table>
</document>

View File

@ -0,0 +1 @@
{"numExpectedTables":1,"numCorrectlyDetectedTables":1,"numErroneouslyDetectedTables":0,"expectedFailure":false}

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="competition-entry-region-model.xsd" filename='bm_eu-011-reg.xml'>
<table id='1'>
<region id='1' page='3'>
<instruction instr-id='345'/>
<instruction instr-id='345' subinstr-id='2'/>
<instruction instr-id='345' subinstr-id='4'/>
<instruction instr-id='345' subinstr-id='6'/>
<instruction instr-id='345' subinstr-id='8'/>
<instruction instr-id='345' subinstr-id='10'/>
<instruction instr-id='345' subinstr-id='12'/>
<instruction instr-id='345' subinstr-id='14'/>
<instruction instr-id='345' subinstr-id='16'/>
<instruction instr-id='345' subinstr-id='18'/>
<instruction instr-id='345' subinstr-id='20'/>
<instruction instr-id='345' subinstr-id='22'/>
<instruction instr-id='371'/>
<instruction instr-id='371' subinstr-id='2'/>
<instruction instr-id='396'/>
<instruction instr-id='420'/>
<instruction instr-id='445'/>
<instruction instr-id='470'/>
<instruction instr-id='529'/>
<instruction instr-id='529' subinstr-id='2'/>
<instruction instr-id='529' subinstr-id='4'/>
<instruction instr-id='529' subinstr-id='6'/>
<instruction instr-id='529' subinstr-id='8'/>
<instruction instr-id='555'/>
<instruction instr-id='579'/>
<instruction instr-id='603'/>
<instruction instr-id='627'/>
<instruction instr-id='651'/>
<instruction instr-id='710'/>
<instruction instr-id='710' subinstr-id='2'/>
<instruction instr-id='710' subinstr-id='4'/>
<instruction instr-id='710' subinstr-id='6'/>
<instruction instr-id='736'/>
<instruction instr-id='761'/>
<instruction instr-id='785'/>
<instruction instr-id='809'/>
<instruction instr-id='833'/>
<instruction instr-id='859'/>
<instruction instr-id='859' subinstr-id='2'/>
<instruction instr-id='885'/>
<instruction instr-id='909'/>
<instruction instr-id='933'/>
<instruction instr-id='957'/>
<instruction instr-id='982'/>
<instruction instr-id='1005'/>
<instruction instr-id='1005' subinstr-id='2'/>
<instruction instr-id='1028'/>
<instruction instr-id='1049'/>
<instruction instr-id='1070'/>
<instruction instr-id='1091'/>
<instruction instr-id='1112'/>
<bounding-box x1='71' y1='473' x2='506' y2='546'/>
</region>
</table>
</document>

View File

@ -0,0 +1,179 @@
<?xml version="1.0" encoding="UTF-8"?>
<document filename="bm_eu-011-str.xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="competition-entry-structure-model.xsd">
<table id="1">
<region col-increment="0" id="1" page="3" row-increment="0">
<cell end-col="0" end-row="0" id="1" start-col="0" start-row="0">
<bounding-box x1="73" x2="243" y1="536" y2="546"/>
<content>Differences with respect to Germany</content>
<instruction instr-id="345" subinstr-id="0"/>
<instruction instr-id="345" subinstr-id="2"/>
<instruction instr-id="345" subinstr-id="4"/>
<instruction instr-id="345" subinstr-id="6"/>
<instruction instr-id="345" subinstr-id="8"/>
<instruction instr-id="345" subinstr-id="10"/>
<instruction instr-id="345" subinstr-id="12"/>
<instruction instr-id="345" subinstr-id="14"/>
<instruction instr-id="345" subinstr-id="16"/>
<instruction instr-id="345" subinstr-id="18"/>
<instruction instr-id="345" subinstr-id="20"/>
<instruction instr-id="345" subinstr-id="22"/>
</cell>
<cell end-col="1" end-row="0" id="1" start-col="1" start-row="0">
<bounding-box x1="279" x2="319" y1="536" y2="546"/>
<content>Portugal</content>
<instruction instr-id="371" subinstr-id="0"/>
<instruction instr-id="371" subinstr-id="2"/>
</cell>
<cell end-col="2" end-row="0" id="1" start-col="2" start-row="0">
<bounding-box x1="330" x2="361" y1="536" y2="546"/>
<content>Greece</content>
<instruction instr-id="396" subinstr-id="-1"/>
</cell>
<cell end-col="3" end-row="0" id="1" start-col="3" start-row="0">
<bounding-box x1="378" x2="405" y1="536" y2="546"/>
<content>Spain</content>
<instruction instr-id="420" subinstr-id="-1"/>
</cell>
<cell end-col="4" end-row="0" id="1" start-col="4" start-row="0">
<bounding-box x1="426" x2="448" y1="536" y2="546"/>
<content>Italy</content>
<instruction instr-id="445" subinstr-id="-1"/>
</cell>
<cell end-col="5" end-row="0" id="1" start-col="5" start-row="0">
<bounding-box x1="474" x2="506" y1="536" y2="546"/>
<content>France</content>
<instruction instr-id="470" subinstr-id="0"/>
</cell>
<cell end-col="0" end-row="1" id="1" start-col="0" start-row="1">
<bounding-box x1="71" x2="169" y1="518" y2="528"/>
<content>Q2 2006 Q1 2010**</content>
<instruction instr-id="529" subinstr-id="0"/>
<instruction instr-id="529" subinstr-id="2"/>
<instruction instr-id="529" subinstr-id="4"/>
<instruction instr-id="529" subinstr-id="6"/>
<instruction instr-id="529" subinstr-id="8"/>
</cell>
<cell end-col="1" end-row="1" id="1" start-col="1" start-row="1">
<bounding-box x1="279" x2="298" y1="518" y2="528"/>
<content>0.33</content>
<instruction instr-id="555" subinstr-id="-1"/>
</cell>
<cell end-col="2" end-row="1" id="1" start-col="2" start-row="1">
<bounding-box x1="330" x2="349" y1="518" y2="528"/>
<content>0.51</content>
<instruction instr-id="579" subinstr-id="-1"/>
</cell>
<cell end-col="3" end-row="1" id="1" start-col="3" start-row="1">
<bounding-box x1="378" x2="397" y1="518" y2="528"/>
<content>0.31</content>
<instruction instr-id="603" subinstr-id="-1"/>
</cell>
<cell end-col="4" end-row="1" id="1" start-col="4" start-row="1">
<bounding-box x1="426" x2="445" y1="518" y2="528"/>
<content>0.18</content>
<instruction instr-id="627" subinstr-id="-1"/>
</cell>
<cell end-col="5" end-row="1" id="1" start-col="5" start-row="1">
<bounding-box x1="474" x2="493" y1="518" y2="528"/>
<content>0.05</content>
<instruction instr-id="651" subinstr-id="-1"/>
</cell>
<cell end-col="0" end-row="2" id="1" start-col="0" start-row="2">
<bounding-box x1="71" x2="159" y1="503" y2="513"/>
<content>Q1 2009 Q4 2009</content>
<instruction instr-id="710" subinstr-id="0"/>
<instruction instr-id="710" subinstr-id="2"/>
<instruction instr-id="710" subinstr-id="4"/>
<instruction instr-id="710" subinstr-id="6"/>
</cell>
<cell end-col="1" end-row="2" id="1" start-col="1" start-row="2">
<bounding-box x1="279" x2="302" y1="503" y2="513"/>
<content>-0.01</content>
<instruction instr-id="736" subinstr-id="-1"/>
</cell>
<cell end-col="2" end-row="2" id="1" start-col="2" start-row="2">
<bounding-box x1="330" x2="349" y1="503" y2="513"/>
<content>0.45</content>
<instruction instr-id="761" subinstr-id="-1"/>
</cell>
<cell end-col="3" end-row="2" id="1" start-col="3" start-row="2">
<bounding-box x1="378" x2="397" y1="503" y2="513"/>
<content>0.21</content>
<instruction instr-id="785" subinstr-id="-1"/>
</cell>
<cell end-col="4" end-row="2" id="1" start-col="4" start-row="2">
<bounding-box x1="426" x2="445" y1="503" y2="513"/>
<content>0.18</content>
<instruction instr-id="809" subinstr-id="-1"/>
</cell>
<cell end-col="5" end-row="2" id="1" start-col="5" start-row="2">
<bounding-box x1="474" x2="493" y1="503" y2="513"/>
<content>0.05</content>
<instruction instr-id="833" subinstr-id="-1"/>
</cell>
<cell end-col="0" end-row="3" id="1" start-col="0" start-row="3">
<bounding-box x1="71" x2="109" y1="488" y2="498"/>
<content>Q4 2009</content>
<instruction instr-id="859" subinstr-id="0"/>
<instruction instr-id="859" subinstr-id="2"/>
</cell>
<cell end-col="1" end-row="3" id="1" start-col="1" start-row="3">
<bounding-box x1="279" x2="298" y1="488" y2="498"/>
<content>0.17</content>
<instruction instr-id="885" subinstr-id="-1"/>
</cell>
<cell end-col="2" end-row="3" id="1" start-col="2" start-row="3">
<bounding-box x1="330" x2="349" y1="488" y2="498"/>
<content>0.70</content>
<instruction instr-id="909" subinstr-id="-1"/>
</cell>
<cell end-col="3" end-row="3" id="1" start-col="3" start-row="3">
<bounding-box x1="378" x2="397" y1="488" y2="498"/>
<content>0.26</content>
<instruction instr-id="933" subinstr-id="-1"/>
</cell>
<cell end-col="4" end-row="3" id="1" start-col="4" start-row="3">
<bounding-box x1="426" x2="445" y1="488" y2="498"/>
<content>0.09</content>
<instruction instr-id="957" subinstr-id="-1"/>
</cell>
<cell end-col="5" end-row="3" id="1" start-col="5" start-row="3">
<bounding-box x1="474" x2="497" y1="488" y2="498"/>
<content>-0.01</content>
<instruction instr-id="982" subinstr-id="-1"/>
</cell>
<cell end-col="0" end-row="4" id="1" start-col="0" start-row="4">
<bounding-box x1="71" x2="109" y1="473" y2="483"/>
<content>Q1 2010</content>
<instruction instr-id="1005" subinstr-id="0"/>
<instruction instr-id="1005" subinstr-id="2"/>
</cell>
<cell end-col="1" end-row="4" id="1" start-col="1" start-row="4">
<bounding-box x1="279" x2="298" y1="473" y2="483"/>
<content>0.64</content>
<instruction instr-id="1028" subinstr-id="-1"/>
</cell>
<cell end-col="2" end-row="4" id="1" start-col="2" start-row="4">
<bounding-box x1="330" x2="349" y1="473" y2="483"/>
<content>0.72</content>
<instruction instr-id="1049" subinstr-id="-1"/>
</cell>
<cell end-col="3" end-row="4" id="1" start-col="3" start-row="4">
<bounding-box x1="378" x2="397" y1="473" y2="483"/>
<content>0.56</content>
<instruction instr-id="1070" subinstr-id="-1"/>
</cell>
<cell end-col="4" end-row="4" id="1" start-col="4" start-row="4">
<bounding-box x1="426" x2="445" y1="473" y2="483"/>
<content>0.43</content>
<instruction instr-id="1091" subinstr-id="-1"/>
</cell>
<cell end-col="5" end-row="4" id="1" start-col="5" start-row="4">
<bounding-box x1="474" x2="493" y1="473" y2="483"/>
<content>0.25</content>
<instruction instr-id="1112" subinstr-id="-1"/>
</cell>
</region>
</table>
</document>

View File

@ -0,0 +1 @@
{"numExpectedTables":1,"numCorrectlyDetectedTables":1,"numErroneouslyDetectedTables":3,"expectedFailure":true}

View File

@ -0,0 +1,265 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="competition-entry-region-model.xsd" filename='bm_eu-012-reg.xml'>
<table id='1'>
<region id='1' page='3'>
<instruction instr-id='514'/>
<instruction instr-id='514' subinstr-id='2'/>
<instruction instr-id='514' subinstr-id='4'/>
<instruction instr-id='527'/>
<instruction instr-id='544'/>
<instruction instr-id='544' subinstr-id='2'/>
<instruction instr-id='544' subinstr-id='4'/>
<instruction instr-id='556'/>
<instruction instr-id='556' subinstr-id='2'/>
<instruction instr-id='556' subinstr-id='4'/>
<instruction instr-id='568'/>
<instruction instr-id='568' subinstr-id='2'/>
<instruction instr-id='568' subinstr-id='4'/>
<instruction instr-id='582'/>
<instruction instr-id='582' subinstr-id='2'/>
<instruction instr-id='582' subinstr-id='4'/>
<instruction instr-id='582' subinstr-id='6'/>
<bounding-box x1='76' y1='209' x2='472' y2='286'/>
</region>
</table>
<table id='2'>
<region id='1' page='4'>
<instruction instr-id='87'/>
<instruction instr-id='87' subinstr-id='2'/>
<instruction instr-id='87' subinstr-id='4'/>
<instruction instr-id='99'/>
<instruction instr-id='99' subinstr-id='2'/>
<instruction instr-id='99' subinstr-id='4'/>
<instruction instr-id='111'/>
<instruction instr-id='133'/>
<instruction instr-id='133' subinstr-id='2'/>
<instruction instr-id='133' subinstr-id='4'/>
<instruction instr-id='149'/>
<instruction instr-id='149' subinstr-id='2'/>
<instruction instr-id='149' subinstr-id='4'/>
<instruction instr-id='149' subinstr-id='6'/>
<instruction instr-id='149' subinstr-id='8'/>
<instruction instr-id='166'/>
<instruction instr-id='172'/>
<instruction instr-id='172' subinstr-id='2'/>
<instruction instr-id='172' subinstr-id='4'/>
<instruction instr-id='189'/>
<instruction instr-id='189' subinstr-id='2'/>
<instruction instr-id='189' subinstr-id='4'/>
<instruction instr-id='205'/>
<instruction instr-id='205' subinstr-id='2'/>
<instruction instr-id='205' subinstr-id='4'/>
<instruction instr-id='205' subinstr-id='6'/>
<instruction instr-id='205' subinstr-id='8'/>
<instruction instr-id='222'/>
<instruction instr-id='228'/>
<instruction instr-id='228' subinstr-id='2'/>
<instruction instr-id='228' subinstr-id='4'/>
<instruction instr-id='245'/>
<instruction instr-id='245' subinstr-id='2'/>
<instruction instr-id='245' subinstr-id='4'/>
<instruction instr-id='261'/>
<instruction instr-id='261' subinstr-id='2'/>
<instruction instr-id='261' subinstr-id='4'/>
<instruction instr-id='261' subinstr-id='6'/>
<instruction instr-id='261' subinstr-id='8'/>
<instruction instr-id='278'/>
<instruction instr-id='284'/>
<instruction instr-id='284' subinstr-id='2'/>
<instruction instr-id='284' subinstr-id='4'/>
<instruction instr-id='301'/>
<instruction instr-id='301' subinstr-id='2'/>
<instruction instr-id='301' subinstr-id='4'/>
<instruction instr-id='317'/>
<instruction instr-id='317' subinstr-id='2'/>
<instruction instr-id='317' subinstr-id='4'/>
<instruction instr-id='317' subinstr-id='6'/>
<instruction instr-id='317' subinstr-id='8'/>
<instruction instr-id='334'/>
<instruction instr-id='340'/>
<instruction instr-id='340' subinstr-id='2'/>
<instruction instr-id='340' subinstr-id='4'/>
<bounding-box x1='81' y1='410' x2='490' y2='619'/>
</region>
</table>
<table id='3'>
<region id='1' page='4'>
<instruction instr-id='460'/>
<instruction instr-id='460' subinstr-id='2'/>
<instruction instr-id='460' subinstr-id='4'/>
<instruction instr-id='474'/>
<instruction instr-id='490'/>
<instruction instr-id='490' subinstr-id='2'/>
<instruction instr-id='490' subinstr-id='4'/>
<instruction instr-id='504'/>
<instruction instr-id='504' subinstr-id='2'/>
<instruction instr-id='504' subinstr-id='4'/>
<instruction instr-id='504' subinstr-id='6'/>
<instruction instr-id='504' subinstr-id='8'/>
<instruction instr-id='504' subinstr-id='10'/>
<instruction instr-id='504' subinstr-id='12'/>
<instruction instr-id='517'/>
<instruction instr-id='517' subinstr-id='2'/>
<instruction instr-id='517' subinstr-id='4'/>
<instruction instr-id='529'/>
<instruction instr-id='529' subinstr-id='2'/>
<instruction instr-id='529' subinstr-id='4'/>
<instruction instr-id='542'/>
<instruction instr-id='542' subinstr-id='2'/>
<instruction instr-id='542' subinstr-id='4'/>
<instruction instr-id='542' subinstr-id='6'/>
<instruction instr-id='542' subinstr-id='8'/>
<instruction instr-id='542' subinstr-id='10'/>
<instruction instr-id='542' subinstr-id='12'/>
<instruction instr-id='542' subinstr-id='14'/>
<instruction instr-id='542' subinstr-id='16'/>
<instruction instr-id='542' subinstr-id='18'/>
<instruction instr-id='542' subinstr-id='20'/>
<instruction instr-id='542' subinstr-id='22'/>
<instruction instr-id='556'/>
<instruction instr-id='556' subinstr-id='2'/>
<instruction instr-id='556' subinstr-id='4'/>
<instruction instr-id='556' subinstr-id='6'/>
<instruction instr-id='588'/>
<instruction instr-id='595' subinstr-id='2'/>
<instruction instr-id='595' subinstr-id='4'/>
<instruction instr-id='595' subinstr-id='6'/>
<instruction instr-id='595' subinstr-id='8'/>
<instruction instr-id='595' subinstr-id='10'/>
<instruction instr-id='595' subinstr-id='12'/>
<instruction instr-id='595' subinstr-id='14'/>
<instruction instr-id='595' subinstr-id='16'/>
<instruction instr-id='595' subinstr-id='18'/>
<instruction instr-id='628'/>
<instruction instr-id='634'/>
<instruction instr-id='634' subinstr-id='2'/>
<instruction instr-id='634' subinstr-id='4'/>
<instruction instr-id='634' subinstr-id='6'/>
<instruction instr-id='634' subinstr-id='8'/>
<instruction instr-id='634' subinstr-id='10'/>
<instruction instr-id='634' subinstr-id='12'/>
<instruction instr-id='634' subinstr-id='14'/>
<instruction instr-id='634' subinstr-id='16'/>
<instruction instr-id='634' subinstr-id='18'/>
<instruction instr-id='666'/>
<instruction instr-id='672'/>
<instruction instr-id='672' subinstr-id='2'/>
<instruction instr-id='672' subinstr-id='4'/>
<instruction instr-id='672' subinstr-id='6'/>
<instruction instr-id='672' subinstr-id='8'/>
<instruction instr-id='672' subinstr-id='10'/>
<instruction instr-id='672' subinstr-id='12'/>
<instruction instr-id='672' subinstr-id='14'/>
<instruction instr-id='672' subinstr-id='16'/>
<instruction instr-id='672' subinstr-id='18'/>
<bounding-box x1='77' y1='155' x2='520' y2='246'/>
</region>
</table>
<table id='4'>
<region id='1' page='5'>
<instruction instr-id='37'/>
<instruction instr-id='37' subinstr-id='2'/>
<instruction instr-id='37' subinstr-id='4'/>
<instruction instr-id='49'/>
<instruction instr-id='49' subinstr-id='2'/>
<instruction instr-id='49' subinstr-id='4'/>
<instruction instr-id='61'/>
<instruction instr-id='61' subinstr-id='2'/>
<instruction instr-id='61' subinstr-id='4'/>
<instruction instr-id='86'/>
<instruction instr-id='86' subinstr-id='2'/>
<instruction instr-id='86' subinstr-id='4'/>
<instruction instr-id='86' subinstr-id='6'/>
<instruction instr-id='86' subinstr-id='8'/>
<instruction instr-id='86' subinstr-id='10'/>
<instruction instr-id='86' subinstr-id='12'/>
<instruction instr-id='86' subinstr-id='14'/>
<instruction instr-id='86' subinstr-id='16'/>
<instruction instr-id='86' subinstr-id='18'/>
<instruction instr-id='86' subinstr-id='20'/>
<instruction instr-id='86' subinstr-id='22'/>
<instruction instr-id='86' subinstr-id='24'/>
<instruction instr-id='86' subinstr-id='26'/>
<instruction instr-id='86' subinstr-id='28'/>
<instruction instr-id='86' subinstr-id='30'/>
<instruction instr-id='86' subinstr-id='32'/>
<instruction instr-id='86' subinstr-id='34'/>
<instruction instr-id='86' subinstr-id='36'/>
<instruction instr-id='86' subinstr-id='38'/>
<instruction instr-id='86' subinstr-id='40'/>
<instruction instr-id='86' subinstr-id='42'/>
<instruction instr-id='86' subinstr-id='44'/>
<instruction instr-id='86' subinstr-id='46'/>
<instruction instr-id='86' subinstr-id='48'/>
<instruction instr-id='112'/>
<instruction instr-id='119'/>
<instruction instr-id='119' subinstr-id='2'/>
<instruction instr-id='119' subinstr-id='4'/>
<instruction instr-id='119' subinstr-id='6'/>
<instruction instr-id='119' subinstr-id='8'/>
<instruction instr-id='146'/>
<instruction instr-id='152'/>
<instruction instr-id='152' subinstr-id='2'/>
<instruction instr-id='152' subinstr-id='4'/>
<instruction instr-id='152' subinstr-id='6'/>
<instruction instr-id='152' subinstr-id='8'/>
<instruction instr-id='178'/>
<instruction instr-id='184'/>
<instruction instr-id='184' subinstr-id='2'/>
<instruction instr-id='184' subinstr-id='4'/>
<instruction instr-id='184' subinstr-id='6'/>
<instruction instr-id='184' subinstr-id='8'/>
<bounding-box x1='77' y1='641' x2='511' y2='733'/>
</region>
</table>
<table id='5'>
<region id='1' page='5'>
<instruction instr-id='392'/>
<instruction instr-id='392' subinstr-id='2'/>
<instruction instr-id='392' subinstr-id='4'/>
<instruction instr-id='392' subinstr-id='6'/>
<instruction instr-id='392' subinstr-id='8'/>
<instruction instr-id='392' subinstr-id='10'/>
<instruction instr-id='392' subinstr-id='12'/>
<instruction instr-id='392' subinstr-id='14'/>
<instruction instr-id='406'/>
<instruction instr-id='406' subinstr-id='2'/>
<instruction instr-id='406' subinstr-id='4'/>
<instruction instr-id='406' subinstr-id='6'/>
<instruction instr-id='420'/>
<instruction instr-id='420' subinstr-id='2'/>
<instruction instr-id='420' subinstr-id='4'/>
<instruction instr-id='420' subinstr-id='6'/>
<instruction instr-id='441'/>
<instruction instr-id='441' subinstr-id='2'/>
<instruction instr-id='441' subinstr-id='4'/>
<instruction instr-id='441' subinstr-id='6'/>
<instruction instr-id='441' subinstr-id='8'/>
<instruction instr-id='455'/>
<instruction instr-id='455' subinstr-id='2'/>
<instruction instr-id='455' subinstr-id='4'/>
<instruction instr-id='469'/>
<instruction instr-id='469' subinstr-id='2'/>
<instruction instr-id='469' subinstr-id='4'/>
<instruction instr-id='483'/>
<instruction instr-id='483' subinstr-id='2'/>
<instruction instr-id='483' subinstr-id='4'/>
<instruction instr-id='497'/>
<instruction instr-id='497' subinstr-id='2'/>
<instruction instr-id='497' subinstr-id='4'/>
<instruction instr-id='510'/>
<instruction instr-id='510' subinstr-id='2'/>
<instruction instr-id='510' subinstr-id='4'/>
<instruction instr-id='510' subinstr-id='6'/>
<instruction instr-id='510' subinstr-id='8'/>
<instruction instr-id='524'/>
<instruction instr-id='524' subinstr-id='2'/>
<instruction instr-id='524' subinstr-id='4'/>
<instruction instr-id='524' subinstr-id='6'/>
<instruction instr-id='524' subinstr-id='8'/>
<instruction instr-id='524' subinstr-id='10'/>
<bounding-box x1='76' y1='187' x2='494' y2='355'/>
</region>
</table>
</document>

View File

@ -0,0 +1 @@
{"numExpectedTables":5,"numCorrectlyDetectedTables":5,"numErroneouslyDetectedTables":1,"expectedFailure":true}

View File

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="competition-entry-region-model.xsd" filename='bm_eu-013-reg.xml'>
<table id='1'>
<region id='1' page='3'>
<instruction instr-id='399'/>
<instruction instr-id='399' subinstr-id='2'/>
<instruction instr-id='399' subinstr-id='4'/>
<instruction instr-id='423'/>
<instruction instr-id='423' subinstr-id='2'/>
<instruction instr-id='423' subinstr-id='4'/>
<instruction instr-id='423' subinstr-id='6'/>
<instruction instr-id='423' subinstr-id='8'/>
<instruction instr-id='442'/>
<instruction instr-id='442' subinstr-id='2'/>
<instruction instr-id='442' subinstr-id='4'/>
<instruction instr-id='442' subinstr-id='6'/>
<instruction instr-id='442' subinstr-id='8'/>
<instruction instr-id='442' subinstr-id='10'/>
<instruction instr-id='442' subinstr-id='12'/>
<instruction instr-id='463'/>
<instruction instr-id='463' subinstr-id='2'/>
<instruction instr-id='463' subinstr-id='4'/>
<instruction instr-id='463' subinstr-id='6'/>
<instruction instr-id='463' subinstr-id='8'/>
<bounding-box x1='76' y1='143' x2='500' y2='204'/>
</region>
</table>
<table id='2'>
<region id='2' page='4'>
<instruction instr-id='33'/>
<instruction instr-id='33' subinstr-id='2'/>
<instruction instr-id='33' subinstr-id='4'/>
<instruction instr-id='33' subinstr-id='6'/>
<instruction instr-id='39'/>
<instruction instr-id='39' subinstr-id='2'/>
<instruction instr-id='39' subinstr-id='4'/>
<instruction instr-id='39' subinstr-id='6'/>
<instruction instr-id='39' subinstr-id='8'/>
<instruction instr-id='45'/>
<instruction instr-id='45' subinstr-id='2'/>
<instruction instr-id='45' subinstr-id='4'/>
<instruction instr-id='45' subinstr-id='6'/>
<instruction instr-id='50'/>
<instruction instr-id='50' subinstr-id='2'/>
<instruction instr-id='65'/>
<instruction instr-id='65' subinstr-id='2'/>
<instruction instr-id='65' subinstr-id='4'/>
<instruction instr-id='71'/>
<instruction instr-id='71' subinstr-id='2'/>
<instruction instr-id='77'/>
<instruction instr-id='77' subinstr-id='4'/>
<instruction instr-id='77' subinstr-id='6'/>
<instruction instr-id='89'/>
<instruction instr-id='89' subinstr-id='2'/>
<instruction instr-id='89' subinstr-id='4'/>
<instruction instr-id='95'/>
<instruction instr-id='95' subinstr-id='2'/>
<instruction instr-id='101'/>
<instruction instr-id='101' subinstr-id='4'/>
<instruction instr-id='101' subinstr-id='6'/>
<instruction instr-id='113'/>
<instruction instr-id='113' subinstr-id='2'/>
<instruction instr-id='113' subinstr-id='4'/>
<instruction instr-id='113' subinstr-id='6'/>
<instruction instr-id='113' subinstr-id='10'/>
<instruction instr-id='113' subinstr-id='12'/>
<instruction instr-id='125'/>
<instruction instr-id='125' subinstr-id='2'/>
<instruction instr-id='125' subinstr-id='4'/>
<instruction instr-id='125' subinstr-id='6'/>
<instruction instr-id='125' subinstr-id='8'/>
<instruction instr-id='125' subinstr-id='10'/>
<instruction instr-id='137'/>
<instruction instr-id='137' subinstr-id='2'/>
<instruction instr-id='137' subinstr-id='4'/>
<instruction instr-id='143'/>
<instruction instr-id='143' subinstr-id='2'/>
<instruction instr-id='143' subinstr-id='4'/>
<instruction instr-id='155'/>
<instruction instr-id='155' subinstr-id='2'/>
<instruction instr-id='155' subinstr-id='4'/>
<instruction instr-id='155' subinstr-id='6'/>
<instruction instr-id='155' subinstr-id='8'/>
<instruction instr-id='167'/>
<instruction instr-id='167' subinstr-id='2'/>
<instruction instr-id='167' subinstr-id='4'/>
<instruction instr-id='167' subinstr-id='6'/>
<instruction instr-id='167' subinstr-id='8'/>
<instruction instr-id='167' subinstr-id='10'/>
<instruction instr-id='179'/>
<instruction instr-id='179' subinstr-id='2'/>
<instruction instr-id='179' subinstr-id='4'/>
<instruction instr-id='192'/>
<instruction instr-id='192' subinstr-id='2'/>
<instruction instr-id='192' subinstr-id='4'/>
<instruction instr-id='192' subinstr-id='6'/>
<bounding-box x1='73' y1='559' x2='517' y2='733'/>
</region>
</table>
<table id='3'>
<region id='1' page='5'>
<instruction instr-id='277' subinstr-id='2'/>
<instruction instr-id='277' subinstr-id='4'/>
<instruction instr-id='277' subinstr-id='6'/>
<instruction instr-id='297'/>
<instruction instr-id='297' subinstr-id='2'/>
<instruction instr-id='297' subinstr-id='4'/>
<instruction instr-id='297' subinstr-id='6'/>
<instruction instr-id='297' subinstr-id='10'/>
<instruction instr-id='297' subinstr-id='12'/>
<instruction instr-id='297' subinstr-id='14'/>
<instruction instr-id='297' subinstr-id='16'/>
<instruction instr-id='297' subinstr-id='18'/>
<bounding-box x1='76' y1='356' x2='506' y2='383'/>
</region>
</table>
<table id='4'>
<region id='1' page='8'>
<instruction instr-id='229'/>
<instruction instr-id='229' subinstr-id='2'/>
<instruction instr-id='229' subinstr-id='4'/>
<instruction instr-id='229' subinstr-id='6'/>
<instruction instr-id='229' subinstr-id='8'/>
<instruction instr-id='229' subinstr-id='10'/>
<instruction instr-id='229' subinstr-id='12'/>
<instruction instr-id='229' subinstr-id='14'/>
<instruction instr-id='229' subinstr-id='16'/>
<instruction instr-id='250'/>
<instruction instr-id='250' subinstr-id='2'/>
<instruction instr-id='250' subinstr-id='4'/>
<instruction instr-id='250' subinstr-id='6'/>
<instruction instr-id='250' subinstr-id='8'/>
<instruction instr-id='250' subinstr-id='10'/>
<instruction instr-id='269'/>
<instruction instr-id='269' subinstr-id='2'/>
<instruction instr-id='269' subinstr-id='4'/>
<instruction instr-id='275'/>
<instruction instr-id='275' subinstr-id='2'/>
<instruction instr-id='275' subinstr-id='4'/>
<instruction instr-id='275' subinstr-id='6'/>
<instruction instr-id='275' subinstr-id='8'/>
<instruction instr-id='275' subinstr-id='10'/>
<instruction instr-id='294'/>
<instruction instr-id='294' subinstr-id='2'/>
<instruction instr-id='294' subinstr-id='4'/>
<instruction instr-id='313'/>
<instruction instr-id='313' subinstr-id='2'/>
<instruction instr-id='313' subinstr-id='4'/>
<instruction instr-id='313' subinstr-id='6'/>
<instruction instr-id='332'/>
<instruction instr-id='332' subinstr-id='2'/>
<instruction instr-id='332' subinstr-id='4'/>
<bounding-box x1='71' y1='334' x2='502' y2='429'/>
</region>
</table>
</document>

Some files were not shown because too many files have changed in this diff Show More