diff --git a/.github/workflows/huigui.yml b/.github/workflows/huigui.yml index 95ceffc8..4d2f5a25 100644 --- a/.github/workflows/huigui.yml +++ b/.github/workflows/huigui.yml @@ -12,7 +12,7 @@ on: - "**.md" jobs: cli-test: - if: github.repository == 'opendatalab/MinerU' + # if: github.repository == 'opendatalab/MinerU' runs-on: pdf timeout-minutes: 240 strategy: @@ -30,32 +30,32 @@ jobs: conda env list pip show coverage cd $GITHUB_WORKSPACE && sh tests/retry_env.sh - # cd $GITHUB_WORKSPACE && python tests/clean_coverage.py - # cd $GITHUB_WORKSPACE && coverage run -m pytest tests/unittest/ --cov=magic_pdf/ --cov-report html --cov-report term-missing - # cd $GITHUB_WORKSPACE && python tests/get_coverage.py + cd $GITHUB_WORKSPACE && python tests/clean_coverage.py + cd $GITHUB_WORKSPACE && coverage run + cd $GITHUB_WORKSPACE && python tests/get_coverage.py cd $GITHUB_WORKSPACE && pytest -s -v tests/test_cli/test_cli_sdk.py - notify_to_feishu: - if: ${{ always() && !cancelled() && contains(needs.*.result, 'failure')}} - needs: cli-test - runs-on: pdf - steps: - - name: get_actor - run: | - metion_list="dt-yy" - echo $GITHUB_ACTOR - if [[ $GITHUB_ACTOR == "drunkpig" ]]; then - metion_list="xuchao" - elif [[ $GITHUB_ACTOR == "myhloli" ]]; then - metion_list="zhaoxiaomeng" - elif [[ $GITHUB_ACTOR == "icecraft" ]]; then - metion_list="xurui1" - fi - echo $metion_list - echo "METIONS=$metion_list" >> "$GITHUB_ENV" - echo ${{ env.METIONS }} - - - name: notify - run: | - #echo ${{ secrets.USER_ID }} - curl -X POST -H "Content-Type: application/json" -d '{"msg_type":"post","content":{"post":{"zh_cn":{"title":"'${{ github.repository }}' GitHubAction Failed","content":[[{"tag":"text","text":""},{"tag":"a","text":"Please click here for details ","href":"https://github.com/'${{ github.repository }}'/actions/runs/'${GITHUB_RUN_ID}'"},{"tag":"at","user_id":"'$USER_ID'"}]]}}}}' $WEBHOOK_URL +# notify_to_feishu: +# if: ${{ always() && !cancelled() && contains(needs.*.result, 'failure')}} +# needs: cli-test +# runs-on: pdf +# steps: +# - name: get_actor +# run: | +# metion_list="dt-yy" +# echo $GITHUB_ACTOR +# if [[ $GITHUB_ACTOR == "drunkpig" ]]; then +# metion_list="xuchao" +# elif [[ $GITHUB_ACTOR == "myhloli" ]]; then +# metion_list="zhaoxiaomeng" +# elif [[ $GITHUB_ACTOR == "icecraft" ]]; then +# metion_list="xurui1" +# fi +# echo $metion_list +# echo "METIONS=$metion_list" >> "$GITHUB_ENV" +# echo ${{ env.METIONS }} +# +# - name: notify +# run: | +# #echo ${{ secrets.USER_ID }} +# curl -X POST -H "Content-Type: application/json" -d '{"msg_type":"post","content":{"post":{"zh_cn":{"title":"'${{ github.repository }}' GitHubAction Failed","content":[[{"tag":"text","text":""},{"tag":"a","text":"Please click here for details ","href":"https://github.com/'${{ github.repository }}'/actions/runs/'${GITHUB_RUN_ID}'"},{"tag":"at","user_id":"'$USER_ID'"}]]}}}}' $WEBHOOK_URL diff --git a/pyproject.toml b/pyproject.toml index 17444785..e1cc7d45 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "mineru" dynamic = ["version"] -license = {text = "AGPL-3.0"} +license = { text = "AGPL-3.0" } description = "A practical tool for converting PDF to Markdown" readme = "README.md" requires-python = ">=3.10,<3.14" @@ -38,6 +38,12 @@ dependencies = [ ] [project.optional-dependencies] +test = [ + "mineru[core]", + "pytest", + "pytest-cov", + "beautifulsoup4" +] vlm = [ "transformers>=4.51.1", "torch>=2.6.0", @@ -112,7 +118,7 @@ mineru-api = "mineru.cli.fast_api:main" mineru-gradio = "mineru.cli.gradio_app:main" [tool.setuptools.dynamic] -version = {attr = "mineru.version.__version__"} +version = { attr = "mineru.version.__version__" } [tool.setuptools.packages.find] include = ["mineru*"] @@ -125,3 +131,35 @@ namespaces = false [tool.setuptools] include-package-data = true zip-safe = false + +[tool.pytest.ini_options] +addopts = "-s --cov=mineru --cov-report html" + +[tool.coverage.run] +command_line = "-m pytest tests/unittest/test_e2e.py" +source = ["mineru/"] +omit = [ + "*/vlm_sglang_model/*", + "*/gradio_app.py", + "*/models_download.py", + "*/fast_api.py", + "*/cli/client.py", + "*/sglang_engine_predictor.py", + "*/vlm_sglang_server.py", + "*/cli_parser.py", + "*/run_async.py" +] +[tool.coverage.html] +exclude_also = [ + 'def __repr__', + 'if self.debug:', + 'if settings.DEBUG', + 'raise AssertionError', + 'raise NotImplementedError', + 'if 0:', + 'if __name__ == .__main__.:', + 'if TYPE_CHECKING:', + 'class .*\bProtocol\):', + '@(abc\.)?abstractmethod', +] +directory = "tests/htmelcov" \ No newline at end of file diff --git a/tests/retry_env.sh b/tests/retry_env.sh deleted file mode 100644 index 0fbecbd3..00000000 --- a/tests/retry_env.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -max_retries=5 -retry_count=0 - -while true; do - # prepare env - #python -m pip install -r requirements-qa.txt - #python -m pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com -i https://mirrors.aliyun.com/pypi/simple - pip install -e . - python -m pip install paddlepaddle-gpu==3.0.0b1 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/ - pip install modelscope - wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/scripts/download_models.py -O download_models.py - python download_models.py - exit_code=$? - if [ $exit_code -eq 0 ]; then - echo "test.sh 成功执行!" - break - else - let retry_count+=1 - if [ $retry_count -ge $max_retries ]; then - echo "达到最大重试次数 ($max_retries),放弃重试。" - exit 1 - fi - echo "test.sh 执行失败 (退出码: $exit_code)。尝试第 $retry_count 次重试..." - sleep 5 - fi -done diff --git a/tests/test_cli/conf/__init__py b/tests/test_cli/conf/__init__py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/test_cli/conf/conf.py b/tests/test_cli/conf/conf.py deleted file mode 100644 index 628a1088..00000000 --- a/tests/test_cli/conf/conf.py +++ /dev/null @@ -1,10 +0,0 @@ -import os -conf = { -"code_path": os.environ.get('GITHUB_WORKSPACE'), -"pdf_dev_path" : os.environ.get('GITHUB_WORKSPACE') + "/tests/test_cli/pdf_dev", -#"code_path": "/home/quyuan/ci/actions-runner/MinerU", -#"pdf_dev_path": "/home/quyuan/ci/actions-runner/MinerU/tests/test_cli/pdf_dev", -"pdf_res_path": "/tmp/magic-pdf", -"jsonl_path": "s3://llm-qatest-pnorm/mineru/test/line1.jsonl", -"s3_pdf_path": "s3://llm-qatest-pnorm/mineru/test/test_rearch_report.pdf" -} diff --git a/tests/test_cli/conftest.py b/tests/test_cli/conftest.py deleted file mode 100644 index 373b5867..00000000 --- a/tests/test_cli/conftest.py +++ /dev/null @@ -1,10 +0,0 @@ -import pytest -import torch - -def clear_gpu_memory(): - ''' - clear GPU memory - ''' - torch.cuda.empty_cache() - print("GPU memory cleared.") - diff --git a/tests/test_cli/lib/__init__.py b/tests/test_cli/lib/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/test_cli/lib/calculate_score.py b/tests/test_cli/lib/calculate_score.py deleted file mode 100644 index a7c140d6..00000000 --- a/tests/test_cli/lib/calculate_score.py +++ /dev/null @@ -1,116 +0,0 @@ -""" -calculate_score -""" -import os -import re -import json -from Levenshtein import distance -from lib import scoring -from nltk.translate.bleu_score import sentence_bleu, SmoothingFunction -from nltk.tokenize import word_tokenize -import nltk -nltk.download('punkt') - -class Scoring: - """ - calculate_score - """ - def __init__(self, result_path): - """ - init - """ - self.edit_distances = [] - self.bleu_scores = [] - self.sim_scores = [] - self.filenames = [] - self.score_dict = {} - self.anntion_cnt = 0 - self.fw = open(result_path, "w+", encoding='utf-8') - - def simple_bleu_score(self, candidate, reference): - """ - get bleu score - """ - candidate_tokens = word_tokenize(candidate) - reference_tokens = word_tokenize(reference) - return sentence_bleu([reference_tokens], candidate_tokens, smoothing_function=SmoothingFunction().method1) - - - def preprocess_string(self, s): - """ - preprocess_string - """ - sub_enter = re.sub(r'\n+', '\n', s) - return re.sub(r' ', ' ', sub_enter) - - def calculate_similarity(self, annotion, actual, tool_type): - """ - calculate_similarity - """ - class_dict = {} - edit_distances = [] - bleu_scores = [] - sim_scores = list() - total_file = 0 - for filename in os.listdir(annotion): - if filename.endswith('.md') and not filename.startswith('.'): - total_file = total_file + 1 - with open(os.path.join(annotion, filename), 'r', encoding='utf-8') as file_a: - content_a = file_a.read() - self.anntion_cnt = self.anntion_cnt + 1 - filepath_b = os.path.join(actual, filename) - if os.path.exists(filepath_b): - with open(filepath_b, 'r', encoding='utf-8') as file_b: - content_b = file_b.read() - self.filenames.append(filename) - edit_dist = distance(self.preprocess_string(content_b),self.preprocess_string(content_a)) / max(len(content_a), len(content_b)) - self.edit_distances.append(edit_dist) - edit_distances.append(edit_dist) - bleu_score = self.simple_bleu_score(content_b, content_a) - bleu_scores.append(bleu_score) - self.bleu_scores.append(bleu_score) - score = scoring.score_text(content_b, content_a) - sim_scores.append(score) - self.sim_scores.append(score) - class_dict[filename] = {"edit_dist": edit_dist, "bleu_score": bleu_score, "sim_score": score} - self.score_dict[filename] = {"edit_dist": edit_dist, "bleu_score": bleu_score, "sim_score": score} - else: - print(f"File {filename} not found in actual directory.") - class_average_edit_distance = sum(edit_distances) / len(edit_distances) if edit_distances else 0 - class_average_bleu_score = sum(bleu_scores) / len(bleu_scores) if bleu_scores else 0 - class_average_sim_score = sum(sim_scores) / len(sim_scores) if sim_scores else 0 - self.fw.write(json.dumps(class_dict, ensure_ascii=False) + "\n") - ratio = len(class_dict)/total_file - self.fw.write(f"{tool_type} extract ratio: {ratio}" + "\n") - self.fw.write(f"{tool_type} Average Levenshtein Distance: {class_average_edit_distance}" + "\n") - self.fw.write(f"{tool_type} Average BLEU Score: {class_average_bleu_score}" + "\n") - self.fw.write(f"{tool_type} Average Sim Score: {class_average_sim_score}" + "\n") - print (f"{tool_type} extract ratio: {ratio}") - print (f"{tool_type} Average Levenshtein Distance: {class_average_edit_distance}") - print (f"{tool_type} Average BLEU Score: {class_average_bleu_score}") - print (f"{tool_type} Average Sim Score: {class_average_sim_score}") - return self.score_dict - - def summary_scores(self): - """ - calculate the average of edit distance, bleu score and sim score - """ - over_all_dict = dict() - average_edit_distance = sum(self.edit_distances) / len(self.edit_distances) if self.edit_distances else 0 - average_bleu_score = sum(self.bleu_scores) / len(self.bleu_scores) if self.bleu_scores else 0 - average_sim_score = sum(self.sim_scores) / len(self.sim_scores) if self.sim_scores else 0 - over_all_dict["average_edit_distance"] = average_edit_distance - over_all_dict["average_bleu_score"] = average_bleu_score - over_all_dict["average_sim_score"] = average_sim_score - self.fw.write(json.dumps(over_all_dict, ensure_ascii=False) + "\n") - return over_all_dict - - def calculate_similarity_total(self, tool_type, download_dir): - """ - calculate the average of edit distance, bleu score and sim score - """ - annotion = os.path.join(download_dir, "annotations", "cleaned") - actual = os.path.join(download_dir, tool_type, "cleaned") - score = self.calculate_similarity(annotion, actual, tool_type) - return score - diff --git a/tests/test_cli/lib/common.py b/tests/test_cli/lib/common.py deleted file mode 100644 index 439acf1a..00000000 --- a/tests/test_cli/lib/common.py +++ /dev/null @@ -1,90 +0,0 @@ -"""common definitions.""" -import os -import shutil -import re -import json -import torch - -def clear_gpu_memory(): - ''' - clear GPU memory - ''' - torch.cuda.empty_cache() - print("GPU memory cleared.") - -def check_shell(cmd): - """shell successful.""" - res = os.system(cmd) - assert res == 0 - -def update_config_file(file_path, key, value): - """update config file.""" - with open(file_path, 'r', encoding="utf-8") as fr: - config = json.loads(fr.read()) - config[key] = value - # 保存修改后的内容 - with open(file_path, 'w', encoding='utf-8') as fw: - json.dump(config, fw, ensure_ascii=False, indent=4) - -def cli_count_folders_and_check_contents(file_path): - """" count cli files.""" - if os.path.exists(file_path): - for files in os.listdir(file_path): - folder_count = os.path.getsize(os.path.join(file_path, files)) - assert folder_count > 0 - assert len(os.listdir(file_path)) > 5 - -def sdk_count_folders_and_check_contents(file_path): - """count folders.""" - if os.path.exists(file_path): - file_count = os.path.getsize(file_path) - assert file_count > 0 - else: - exit(1) - - - -def delete_file(path): - """delete file.""" - if not os.path.exists(path): - if os.path.isfile(path): - try: - os.remove(path) - print(f"File '{path}' deleted.") - except TypeError as e: - print(f"Error deleting file '{path}': {e}") - elif os.path.isdir(path): - try: - shutil.rmtree(path) - print(f"Directory '{path}' and its contents deleted.") - except TypeError as e: - print(f"Error deleting directory '{path}': {e}") - -def check_latex_table_exists(file_path): - """check latex table exists.""" - pattern = r'\\begin\{tabular\}.*?\\end\{tabular\}' - with open(file_path, 'r', encoding='utf-8') as file: - content = file.read() - matches = re.findall(pattern, content, re.DOTALL) - return len(matches) > 0 - -def check_html_table_exists(file_path): - """check html table exists.""" - pattern = r'.*?' - with open(file_path, 'r', encoding='utf-8') as file: - content = file.read() - matches = re.findall(pattern, content, re.DOTALL) - return len(matches) > 0 - -def check_close_tables(file_path): - """delete no tables.""" - latex_pattern = r'\\begin\{tabular\}.*?\\end\{tabular\}' - html_pattern = r'.*?' - with open(file_path, 'r', encoding='utf-8') as file: - content = file.read() - latex_matches = re.findall(latex_pattern, content, re.DOTALL) - html_matches = re.findall(html_pattern, content, re.DOTALL) - if len(latex_matches) == 0 and len(html_matches) == 0: - return True - else: - return False \ No newline at end of file diff --git a/tests/test_cli/lib/pre_clean.py b/tests/test_cli/lib/pre_clean.py deleted file mode 100644 index 4f423021..00000000 --- a/tests/test_cli/lib/pre_clean.py +++ /dev/null @@ -1,128 +0,0 @@ -""" -clean data -""" -import argparse -import os -import re -import htmltabletomd # type: ignore -import pypandoc -import argparse - -parser = argparse.ArgumentParser(description="get tool type") -parser.add_argument( - "--tool_name", - type=str, - required=True, - help="input tool name", -) -parser.add_argument( - "--download_dir", - type=str, - required=True, - help="input download dir", -) -args = parser.parse_args() - -def clean_markdown_images(content): - """ - clean markdown images - """ - pattern = re.compile(r'!\[[^\]]*\]\([^)]*\)', re.IGNORECASE) - cleaned_content = pattern.sub('', content) - return cleaned_content - -def clean_ocrmath_photo(content): - """ - clean ocrmath photo - """ - pattern = re.compile(r'\\includegraphics\[.*?\]\{.*?\}', re.IGNORECASE) - cleaned_content = pattern.sub('', content) - return cleaned_content - -def convert_html_table_to_md(html_table): - """ - convert html table to markdown table - """ - lines = html_table.strip().split('\n') - md_table = '' - if lines and '' in lines[0]: - in_thead = True - for line in lines: - if '' in line: - cells = re.findall(r'(.*?)', line) - md_table += '| ' + ' | '.join(cells) + ' |\n' - in_thead = False - elif '' in line and not in_thead: - cells = re.findall(r'(.*?)', line) - md_table += '| ' + ' | '.join(cells) + ' |\n' - md_table = md_table.rstrip() + '\n' - return md_table - -def convert_latext_to_md(content): - """ - convert latex table to markdown table - """ - tables = re.findall(r'\\begin\{tabular\}(.*?)\\end\{tabular\}', content, re.DOTALL) - placeholders = [] - for table in tables: - placeholder = f"" - replace_str = f"\\begin{{tabular}}{table}cl\\end{{tabular}}" - content = content.replace(replace_str, placeholder) - try: - pypandoc.convert_text(replace_str, format="latex", to="md", outputfile="output.md", encoding="utf-8") - except: - markdown_string = replace_str - else: - markdown_string = open('output.md', 'r', encoding='utf-8').read() - placeholders.append((placeholder, markdown_string)) - new_content = content - for placeholder, md_table in placeholders: - new_content = new_content.replace(placeholder, md_table) - # 写入文件 - return new_content - - -def convert_htmltale_to_md(content): - """ - convert html table to markdown table - """ - tables = re.findall(r'(.*?)
', content, re.DOTALL) - placeholders = [] - for table in tables: - placeholder = f"" - content = content.replace(f"{table}
", placeholder) - try: - convert_table = htmltabletomd.convert_table(table) - except: - convert_table = table - placeholders.append((placeholder,convert_table)) - new_content = content - for placeholder, md_table in placeholders: - new_content = new_content.replace(placeholder, md_table) - # 写入文件 - return new_content - -def clean_data(prod_type, download_dir): - """ - clean data - """ - tgt_dir = os.path.join(download_dir, prod_type, "cleaned") - if not os.path.exists(tgt_dir): - os.makedirs(tgt_dir) - source_dir = os.path.join(download_dir, prod_type) - filenames = os.listdir(source_dir) - for filename in filenames: - if filename.endswith('.md'): - input_file = os.path.join(source_dir, filename) - output_file = os.path.join(tgt_dir, "cleaned_" + filename) - with open(input_file, 'r', encoding='utf-8') as fr: - content = fr.read() - new_content = clean_markdown_images(content) - with open(output_file, 'w', encoding='utf-8') as fw: - fw.write(new_content) - - -if __name__ == '__main__': - tool_type = args.tool_name - download_dir = args.download_dir - clean_data(tool_type, download_dir) diff --git a/tests/test_cli/lib/scoring.py b/tests/test_cli/lib/scoring.py deleted file mode 100644 index acb4b788..00000000 --- a/tests/test_cli/lib/scoring.py +++ /dev/null @@ -1,51 +0,0 @@ -""" -Calculate simscore, refer to (https://github.com/VikParuchuri/marker?tab=readme-ov-file) -""" -import math - -from rapidfuzz import fuzz -import re -import regex -from statistics import mean - -CHUNK_MIN_CHARS = 25 - -def chunk_text(text, chunk_len=500): - chunks = [text[i:i+chunk_len] for i in range(0, len(text), chunk_len)] - chunks = [c for c in chunks if c.strip() and len(c) > CHUNK_MIN_CHARS] - return chunks - - -def overlap_score(hypothesis_chunks, reference_chunks): - if len(reference_chunks) > 0: - length_modifier = len(hypothesis_chunks) / len(reference_chunks) - else: - length_modifier = 0 - search_distance = max(len(reference_chunks) // 5, 10) - chunk_scores = [] - for i, hyp_chunk in enumerate(hypothesis_chunks): - max_score = 0 - total_len = 0 - i_offset = int(i * length_modifier) - chunk_range = range(max(0, i_offset-search_distance), min(len(reference_chunks), i_offset+search_distance)) - for j in chunk_range: - ref_chunk = reference_chunks[j] - score = fuzz.ratio(hyp_chunk, ref_chunk, score_cutoff=30) / 100 - if score > max_score: - max_score = score - total_len = len(ref_chunk) - chunk_scores.append(max_score) - return chunk_scores - - -def score_text(hypothesis, reference): - # Returns a 0-1 alignment score - hypothesis_chunks = chunk_text(hypothesis) - reference_chunks = chunk_text(reference) - chunk_scores = overlap_score(hypothesis_chunks, reference_chunks) - if len(chunk_scores) > 0: - mean_score = mean(chunk_scores) - return mean_score - else: - return 0 - #return mean(chunk_scores) \ No newline at end of file diff --git a/tests/test_cli/magic-pdf.json b/tests/test_cli/magic-pdf.json deleted file mode 100644 index 2c0223db..00000000 --- a/tests/test_cli/magic-pdf.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "bucket_info":{ - "bucket-name-1":["ak", "sk", "endpoint"], - "bucket-name-2":["ak", "sk", "endpoint"] - }, - "temp-output-dir":"/tmp", - "models-dir":"/tmp/models", - "device-mode":"cpu" -} \ No newline at end of file diff --git a/tests/test_cli/pdf_dev/doc/test_mineru.docx b/tests/test_cli/pdf_dev/doc/test_mineru.docx deleted file mode 100644 index a0e0abf8..00000000 Binary files a/tests/test_cli/pdf_dev/doc/test_mineru.docx and /dev/null differ diff --git a/tests/test_cli/pdf_dev/images/docstructbench.jpg b/tests/test_cli/pdf_dev/images/docstructbench.jpg deleted file mode 100644 index 2d2c11bd..00000000 Binary files a/tests/test_cli/pdf_dev/images/docstructbench.jpg and /dev/null differ diff --git a/tests/test_cli/pdf_dev/line1.jsonl b/tests/test_cli/pdf_dev/line1.jsonl deleted file mode 100644 index 1fac8c11..00000000 --- a/tests/test_cli/pdf_dev/line1.jsonl +++ /dev/null @@ -1 +0,0 @@ -{"track_id": "e8824f5a-9fcb-4ee5-b2d4-6bf2c67019dc", "path": "s3://sci-hub/enbook-scimag/78800000/libgen.scimag78872000-78872999/10.1017/cbo9780511770425.012.pdf", "file_type": "pdf", "content_type": "application/pdf", "content_length": 80078, "title": "German Idealism and the Concept of Punishment || Conclusion", "remark": {"file_id": "scihub_78800000/libgen.scimag78872000-78872999.zip_10.1017/cbo9780511770425.012", "file_source_type": "paper", "original_file_id": "10.1017/cbo9780511770425.012", "file_name": "10.1017/cbo9780511770425.012.pdf", "author": "Merle, Jean-Christophe"}, "doc_layout_result": [{"layout_dets": [{"category_id": 2, "poly": [591.1976318359375, 1620.9306640625, 630.57958984375, 1620.9306640625, 630.57958984375, 1643.831787109375, 591.1976318359375, 1643.831787109375], "score": 0.9999933242797852}, {"category_id": 1, "poly": [174.7235870361328, 566.96728515625, 1048.540771484375, 566.96728515625, 1048.540771484375, 1502.302978515625, 174.7235870361328, 1502.302978515625], "score": 0.9999879598617554}, {"category_id": 2, "poly": [45.86769104003906, 1717.0513916015625, 1142.835693359375, 1717.0513916015625, 1142.835693359375, 1762.06494140625, 45.86769104003906, 1762.06494140625], "score": 0.9998946189880371}, {"category_id": 1, "poly": [175.40235900878906, 1504.3228759765625, 1044.1571044921875, 1504.3228759765625, 1044.1571044921875, 1575.264892578125, 175.40235900878906, 1575.264892578125], "score": 0.9997720718383789}, {"category_id": 0, "poly": [462.2110595703125, 220.74905395507812, 755.4266357421875, 220.74905395507812, 755.4266357421875, 257.0824279785156, 462.2110595703125, 257.0824279785156], "score": 0.8909987211227417}, {"category_id": 15, "poly": [587.0, 1616.0, 636.0, 1616.0, 636.0, 1656.0, 587.0, 1656.0], "score": 1.0, "text": "187"}, {"category_id": 15, "poly": [171.0, 568.0, 1044.0, 570.0, 1044.0, 608.0, 171.0, 606.0], "score": 0.98, "text": " In Part 1, we examined the Kantian, retributivist thesis, according to"}, {"category_id": 15, "poly": [171.0, 604.0, 1043.0, 608.0, 1042.0, 645.0, 171.0, 641.0], "score": 0.99, "text": "which the criminal is punished, because he or she merits it. Two interpret-"}, {"category_id": 15, "poly": [174.0, 647.0, 1039.0, 647.0, 1039.0, 679.0, 174.0, 679.0], "score": 0.99, "text": "ations of the Kantian concept of right are possible (see Chapter 1)."}, {"category_id": 15, "poly": [178.0, 684.0, 1039.0, 684.0, 1039.0, 711.0, 178.0, 711.0], "score": 0.99, "text": "On the one hand, according to the liberal interpretation, which does"}, {"category_id": 15, "poly": [180.0, 720.0, 1037.0, 720.0, 1037.0, 746.0, 180.0, 746.0], "score": 0.98, "text": "not refer to the internal disposition of human beings, right is defined"}, {"category_id": 15, "poly": [178.0, 756.0, 1041.0, 756.0, 1041.0, 782.0, 178.0, 782.0], "score": 0.96, "text": "merely as being the coexistence of the freedom of action of all"}, {"category_id": 15, "poly": [173.0, 784.0, 1043.0, 786.0, 1042.0, 823.0, 172.0, 821.0], "score": 0.99, "text": "human beings according to the principle of equality of right. On"}, {"category_id": 15, "poly": [174.0, 823.0, 1042.0, 823.0, 1042.0, 861.0, 174.0, 861.0], "score": 0.99, "text": "the other hand, according to the moral interpretation, which substan-"}, {"category_id": 15, "poly": [178.0, 861.0, 1041.0, 861.0, 1041.0, 892.0, 178.0, 892.0], "score": 0.98, "text": "tially refers to the internal dispositions of human beings, right"}, {"category_id": 15, "poly": [174.0, 894.0, 1043.0, 896.0, 1042.0, 930.0, 174.0, 928.0], "score": 1.0, "text": "should implement the content of the categorical imperative as far as"}, {"category_id": 15, "poly": [172.0, 932.0, 1042.0, 928.0, 1043.0, 964.0, 173.0, 968.0], "score": 1.0, "text": "possible through the application of coercion. In accordance with both"}, {"category_id": 15, "poly": [178.0, 971.0, 1039.0, 971.0, 1039.0, 998.0, 178.0, 998.0], "score": 1.0, "text": "of these interpretations, two dimensions can be distinguished in the"}, {"category_id": 15, "poly": [176.0, 1005.0, 1037.0, 1005.0, 1037.0, 1037.0, 176.0, 1037.0], "score": 0.99, "text": "Kantian retributivist thesis: one genuine dimension of legal ethics,"}, {"category_id": 15, "poly": [176.0, 1041.0, 1042.0, 1041.0, 1042.0, 1072.0, 176.0, 1072.0], "score": 0.99, "text": "which is a dimension independent of the internal dispositions of"}, {"category_id": 15, "poly": [176.0, 1076.0, 1041.0, 1076.0, 1041.0, 1108.0, 176.0, 1108.0], "score": 1.0, "text": "individuals (see Chapter 2), and a dimension of personal ethics (see"}, {"category_id": 15, "poly": [174.0, 1112.0, 1044.0, 1110.0, 1044.0, 1142.0, 174.0, 1144.0], "score": 0.99, "text": "Chapter 3). The dimension of legal ethics of the Kantian retributivist"}, {"category_id": 15, "poly": [173.0, 1144.0, 1043.0, 1146.0, 1042.0, 1183.0, 172.0, 1181.0], "score": 0.99, "text": "thesis contradicts the requirement for the coexistence of all freedoms,"}, {"category_id": 15, "poly": [176.0, 1185.0, 1044.0, 1185.0, 1044.0, 1217.0, 176.0, 1217.0], "score": 0.99, "text": "of which the freedom of the criminal is a part too, and of which it"}, {"category_id": 15, "poly": [178.0, 1221.0, 1042.0, 1221.0, 1042.0, 1252.0, 178.0, 1252.0], "score": 0.99, "text": "ought again to become a part - at least in the most direct way. The"}, {"category_id": 15, "poly": [178.0, 1256.0, 1042.0, 1256.0, 1042.0, 1288.0, 178.0, 1288.0], "score": 1.0, "text": "dimension of personal ethics contradicts the postulate of the highest"}, {"category_id": 15, "poly": [174.0, 1290.0, 1046.0, 1290.0, 1046.0, 1328.0, 174.0, 1328.0], "score": 1.0, "text": "good, which rather requires forgiveness toward the criminal as long as"}, {"category_id": 15, "poly": [176.0, 1329.0, 1042.0, 1329.0, 1042.0, 1361.0, 176.0, 1361.0], "score": 0.99, "text": "this forgiveness is compatible with the concern for the safety of the"}, {"category_id": 15, "poly": [176.0, 1365.0, 1044.0, 1365.0, 1044.0, 1397.0, 176.0, 1397.0], "score": 1.0, "text": "other citizens. Hence, Kant's concept of right as well as his concept of"}, {"category_id": 15, "poly": [176.0, 1401.0, 1042.0, 1401.0, 1042.0, 1432.0, 176.0, 1432.0], "score": 0.99, "text": "virtue require rehabilitation instead of retribution, which ought to"}, {"category_id": 15, "poly": [178.0, 1438.0, 1041.0, 1438.0, 1041.0, 1470.0, 178.0, 1470.0], "score": 0.98, "text": "occur after the shortest possible period of specific deterrence, that is,"}, {"category_id": 15, "poly": [178.0, 1476.0, 572.0, 1476.0, 572.0, 1502.0, 178.0, 1502.0], "score": 1.0, "text": "after a period of incapacitation."}, {"category_id": 15, "poly": [47.0, 1718.0, 1140.0, 1718.0, 1140.0, 1742.0, 47.0, 1742.0], "score": 0.99, "text": "Downloaded from https://www.cambridge.org/core. Universiteit Leiden / LUMC, on 29 Nov 2019 at 23:02:12, subject to the Cambridge Core"}, {"category_id": 15, "poly": [47.0, 1740.0, 947.0, 1740.0, 947.0, 1764.0, 47.0, 1764.0], "score": 0.99, "text": "terms of use, available at https://www.cambridge.org/core/terms. https://doi.org/10.1017/CB09780511770425.012"}, {"category_id": 15, "poly": [208.0, 1508.0, 1046.0, 1508.0, 1046.0, 1539.0, 208.0, 1539.0], "score": 0.97, "text": "In Part 11, I showed how this justification of punishment as a"}, {"category_id": 15, "poly": [173.0, 1543.0, 1043.0, 1547.0, 1042.0, 1579.0, 172.0, 1575.0], "score": 0.98, "text": "rehabilitation occurring after a period of specific deterrence was"}, {"category_id": 15, "poly": [463.0, 223.0, 758.0, 223.0, 758.0, 261.0, 463.0, 261.0], "score": 1.0, "text": "CONCLUSION"}], "judge": {"final_judge": true, "search_judge": true, "score_judge": true, "cannot_find": false, "search_list": [[94.38621520996094, 0.8934143414341433, 0.9166666666666667, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-18233558.pdf_664.jpg"], [96.75828552246094, 0.3755625562556255, 0.40909090909090906, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/996474.pdf_5.jpg"], [101.54622650146484, 0.9999999999999999, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/llm-raw-scihub-o.O-bf01324542.pdf_1.jpg"], [103.87814331054688, 0.9999999999999999, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/af03a51e581f58ba77807426b6fffed5f72e11d9618c38ac397c0746027f70f8.pdf_8.jpg"], [104.06207275390625, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/1012690215583482.pdf_7.jpg"], [107.45576477050781, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-21539592.pdf_279.jpg"], [109.10279846191406, 0.16666666666666666, 0.16666666666666666, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/24e03d05a7386b44b247c74e52e037c2.pdf_20.jpg"], [111.90066528320312, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-19260283.pdf_8703.jpg"], [112.17504119873047, 0.9999999999999999, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/cbo9780511760433.011.pdf_6.jpg"], [112.317626953125, 0.801980198019802, 0.8, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/dianzishu_zhongwenzaixian-o.O-61571679.pdf_158.jpg"]]}, "page_info": {"page_no": 0, "height": 1800, "width": 1200}}, {"layout_dets": [{"category_id": 1, "poly": [186.0487518310547, 160.72091674804688, 1053.1669921875, 160.72091674804688, 1053.1669921875, 1062.760009765625, 186.0487518310547, 1062.760009765625], "score": 0.9999426603317261}, {"category_id": 2, "poly": [530.0048828125, 96.8239517211914, 706.0452880859375, 96.8239517211914, 706.0452880859375, 116.67359161376953, 530.0048828125, 116.67359161376953], "score": 0.9998738765716553}, {"category_id": 2, "poly": [45.27268981933594, 1716.4654541015625, 1144.2857666015625, 1716.4654541015625, 1144.2857666015625, 1766.255859375, 45.27268981933594, 1766.255859375], "score": 0.9995562434196472}, {"category_id": 1, "poly": [183.6819305419922, 1063.69482421875, 1052.115966796875, 1063.69482421875, 1052.115966796875, 1570.769287109375, 183.6819305419922, 1570.769287109375], "score": 0.9991673231124878}, {"category_id": 2, "poly": [188.42965698242188, 93.00428771972656, 232.87054443359375, 93.00428771972656, 232.87054443359375, 116.07218933105469, 188.42965698242188, 116.07218933105469], "score": 0.9988474249839783}, {"category_id": 15, "poly": [186.0, 167.0, 1054.0, 167.0, 1054.0, 204.0, 186.0, 204.0], "score": 1.0, "text": "supported on the basis of the liberal interpretation of Kant's concept"}, {"category_id": 15, "poly": [186.0, 202.0, 1054.0, 202.0, 1054.0, 240.0, 186.0, 240.0], "score": 0.99, "text": "of right by Fichte (see Chapter 4) and Hegel (see Chapter 5): the"}, {"category_id": 15, "poly": [184.0, 240.0, 1054.0, 242.0, 1054.0, 274.0, 184.0, 272.0], "score": 0.98, "text": "criminal is punished, in order that he or she might once again become part"}, {"category_id": 15, "poly": [186.0, 278.0, 1054.0, 278.0, 1054.0, 309.0, 186.0, 309.0], "score": 0.99, "text": "of the commonwealth. Fichte begins with the question of the treatment"}, {"category_id": 15, "poly": [186.0, 313.0, 1052.0, 313.0, 1052.0, 345.0, 186.0, 345.0], "score": 0.99, "text": "of the criminal and by a thought experiment initially draws the"}, {"category_id": 15, "poly": [184.0, 347.0, 1050.0, 349.0, 1050.0, 383.0, 184.0, 381.0], "score": 0.99, "text": "logical conclusion of crime. The logically consistent consequence"}, {"category_id": 15, "poly": [186.0, 384.0, 1050.0, 384.0, 1050.0, 416.0, 186.0, 416.0], "score": 0.98, "text": "of it would not be retaliation, but instead the exclusion of the"}, {"category_id": 15, "poly": [188.0, 424.0, 1046.0, 424.0, 1046.0, 450.0, 188.0, 450.0], "score": 0.99, "text": "criminal from the commonwealth and the revocation of his or her"}, {"category_id": 15, "poly": [186.0, 458.0, 1050.0, 458.0, 1050.0, 489.0, 186.0, 489.0], "score": 0.96, "text": "legal status. The public punishment derived from right as such"}, {"category_id": 15, "poly": [184.0, 493.0, 1052.0, 489.0, 1052.0, 521.0, 184.0, 525.0], "score": 0.99, "text": "emerges as an alternative to this fate that is better for the criminal"}, {"category_id": 15, "poly": [184.0, 529.0, 1050.0, 527.0, 1050.0, 559.0, 184.0, 561.0], "score": 1.0, "text": "so long as the alternative punishment amounts neither to the death"}, {"category_id": 15, "poly": [184.0, 564.0, 1050.0, 561.0, 1050.0, 594.0, 184.0, 598.0], "score": 0.99, "text": "penalty nor to torture but rather to a sentence of incarceration. Such"}, {"category_id": 15, "poly": [182.0, 600.0, 1050.0, 598.0, 1050.0, 630.0, 182.0, 632.0], "score": 0.98, "text": "an expiation, therefore, is not an evil, but rather a chance, which"}, {"category_id": 15, "poly": [186.0, 636.0, 1052.0, 636.0, 1052.0, 667.0, 186.0, 667.0], "score": 0.99, "text": "Fichte constructs in such a way that the criminal can be reformed"}, {"category_id": 15, "poly": [184.0, 669.0, 1050.0, 673.0, 1050.0, 705.0, 184.0, 701.0], "score": 0.98, "text": "and then finally reintegrated into the commonwealth. Hegel, in turn,"}, {"category_id": 15, "poly": [188.0, 711.0, 1048.0, 711.0, 1048.0, 737.0, 188.0, 737.0], "score": 0.99, "text": "chooses as his guideline not the treatment of the criminal, but the"}, {"category_id": 15, "poly": [186.0, 744.0, 1050.0, 744.0, 1050.0, 776.0, 186.0, 776.0], "score": 0.99, "text": "reestablishment of right as the negation of the negation - in which"}, {"category_id": 15, "poly": [186.0, 780.0, 1050.0, 780.0, 1050.0, 812.0, 186.0, 812.0], "score": 0.98, "text": "crime is the negation and the punishment is the negation of the"}, {"category_id": 15, "poly": [182.0, 814.0, 1054.0, 812.0, 1054.0, 849.0, 182.0, 851.0], "score": 0.99, "text": "negation. In so doing, the “negation\" of the negation is in no case, as"}, {"category_id": 15, "poly": [180.0, 849.0, 1052.0, 847.0, 1052.0, 885.0, 180.0, 887.0], "score": 0.99, "text": "it is often mistakenly assumed to be, of the same sort as the simple"}, {"category_id": 15, "poly": [188.0, 885.0, 1050.0, 887.0, 1050.0, 921.0, 187.0, 919.0], "score": 0.99, "text": "\"negation\" is, and thus it should not be taken to be a response to the"}, {"category_id": 15, "poly": [184.0, 922.0, 1050.0, 926.0, 1050.0, 958.0, 184.0, 954.0], "score": 0.98, "text": "evil of the crime by a second evil. Contrary to many interpretations,"}, {"category_id": 15, "poly": [186.0, 960.0, 1050.0, 960.0, 1050.0, 992.0, 186.0, 992.0], "score": 0.98, "text": "Hegel is not a retributivist, even though he - like Fichte as well -"}, {"category_id": 15, "poly": [184.0, 994.0, 1052.0, 996.0, 1052.0, 1029.0, 184.0, 1027.0], "score": 1.0, "text": "assigns to retributivism a (merely) instrumental, psychological role in"}, {"category_id": 15, "poly": [186.0, 1033.0, 1048.0, 1033.0, 1048.0, 1065.0, 186.0, 1065.0], "score": 1.0, "text": "conveying to the convicted criminal the significance of the punishment."}, {"category_id": 15, "poly": [531.0, 96.0, 705.0, 96.0, 705.0, 122.0, 531.0, 122.0], "score": 1.0, "text": "CONCLUSION"}, {"category_id": 15, "poly": [47.0, 1718.0, 1140.0, 1718.0, 1140.0, 1742.0, 47.0, 1742.0], "score": 0.99, "text": "Downloaded from https://www.cambridge.org/core. Universiteit Leiden / LUMC, on 29 Nov 2019 at 23:02:12, subject to the Cambridge Core"}, {"category_id": 15, "poly": [47.0, 1740.0, 947.0, 1740.0, 947.0, 1764.0, 47.0, 1764.0], "score": 0.99, "text": "terms of use, available at https://www.cambridge.org/core/terms. https://doi.org/10.1017/CB09780511770425.012"}, {"category_id": 15, "poly": [218.0, 1067.0, 1052.0, 1067.0, 1052.0, 1099.0, 218.0, 1099.0], "score": 0.98, "text": "In Part 111, it finally turned out that retributivism could often demand"}, {"category_id": 15, "poly": [184.0, 1101.0, 1050.0, 1099.0, 1050.0, 1136.0, 184.0, 1138.0], "score": 0.99, "text": "punishment without any respect for humanity in the person of the criminal."}, {"category_id": 15, "poly": [186.0, 1138.0, 1048.0, 1138.0, 1048.0, 1170.0, 186.0, 1170.0], "score": 0.99, "text": "Nietzsche offers a plausible account of the genesis of retaliative"}, {"category_id": 15, "poly": [182.0, 1174.0, 1054.0, 1170.0, 1054.0, 1207.0, 182.0, 1211.0], "score": 0.98, "text": "punishment (see Chapter 6), in which the motive of the institution"}, {"category_id": 15, "poly": [182.0, 1207.0, 1052.0, 1209.0, 1052.0, 1247.0, 182.0, 1245.0], "score": 1.0, "text": "of such punishments stems not from the respect for human dignity,"}, {"category_id": 15, "poly": [182.0, 1245.0, 1050.0, 1247.0, 1050.0, 1281.0, 182.0, 1279.0], "score": 0.99, "text": "but rather from a universal human cruelty toward the criminal,"}, {"category_id": 15, "poly": [184.0, 1282.0, 1052.0, 1282.0, 1052.0, 1320.0, 184.0, 1320.0], "score": 0.99, "text": "which hinders rather than awakens the emergence of bad conscience"}, {"category_id": 15, "poly": [184.0, 1320.0, 1050.0, 1320.0, 1050.0, 1352.0, 184.0, 1352.0], "score": 0.99, "text": "and remorse in the criminal. When the state establishes a monopoly"}, {"category_id": 15, "poly": [184.0, 1356.0, 1052.0, 1354.0, 1052.0, 1386.0, 184.0, 1388.0], "score": 1.0, "text": "on violence and guarantees public security, the people are deprived"}, {"category_id": 15, "poly": [184.0, 1389.0, 1050.0, 1393.0, 1050.0, 1425.0, 184.0, 1421.0], "score": 1.0, "text": "of the exercise of this cruelty and punishments become comparatively"}, {"category_id": 15, "poly": [188.0, 1431.0, 1046.0, 1431.0, 1046.0, 1457.0, 188.0, 1457.0], "score": 0.98, "text": "mild, such as those we have known since the end of the eighteenth"}, {"category_id": 15, "poly": [186.0, 1464.0, 1048.0, 1464.0, 1048.0, 1496.0, 186.0, 1496.0], "score": 0.99, "text": "century. In order to keep the promise I made in the introduction"}, {"category_id": 15, "poly": [184.0, 1500.0, 1050.0, 1500.0, 1050.0, 1532.0, 184.0, 1532.0], "score": 0.99, "text": "to draw conclusions resulting from the rehabilitative alternative to"}, {"category_id": 15, "poly": [186.0, 1539.0, 1048.0, 1539.0, 1048.0, 1566.0, 186.0, 1566.0], "score": 0.98, "text": "retributivism, I finally argue (see Chapter 7) for a treatment of even"}, {"category_id": 15, "poly": [186.0, 88.0, 238.0, 88.0, 238.0, 126.0, 186.0, 126.0], "score": 1.0, "text": "188"}], "judge": {"final_judge": true, "search_judge": true, "score_judge": true, "cannot_find": false, "search_list": [[39.50499725341797, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/S0021875817000378.pdf_1.jpg"], [41.84830856323242, 0.875, 0.875, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/llm-raw-the-eye-o.O-Kularatna%20-%20Electronic%20Circuit%20Design%20-%20From%20Concept%20to%20Implementation%20%28CRC%2C%202008%29.pdf_418.jpg"], [43.40003967285156, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/CBO9781139088398.007.pdf_29.jpg"], [45.80609893798828, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/s0308-521x%2898%2900056-0.pdf_3.jpg"], [46.35636901855469, 0.9999999999999999, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/cbo9780511760433.011.pdf_6.jpg"], [47.62663269042969, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/9b04f5410f803df1f5f93aa3778059efe90db326c19f5d7ba85414c96739b3bd.pdf_5.jpg"], [48.572166442871094, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/9781316090930.077.pdf_10.jpg"], [49.02326202392578, 0.8585572842998586, 0.8571428571428571, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/CBO9780511551246.006.pdf_7.jpg"], [51.011962890625, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-16659265.pdf_116.jpg"], [51.50635528564453, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-16579787.pdf_143.jpg"]]}, "page_info": {"page_no": 1, "height": 1800, "width": 1200}}, {"layout_dets": [{"category_id": 1, "poly": [175.82254028320312, 164.97610473632812, 1042.52001953125, 164.97610473632812, 1042.52001953125, 486.8489685058594, 175.82254028320312, 486.8489685058594], "score": 0.9999958872795105}, {"category_id": 1, "poly": [175.0261688232422, 488.64630126953125, 1042.31494140625, 488.64630126953125, 1042.31494140625, 630.5396728515625, 175.0261688232422, 630.5396728515625], "score": 0.9999914169311523}, {"category_id": 1, "poly": [176.41859436035156, 634.0240478515625, 1042.75146484375, 634.0240478515625, 1042.75146484375, 1133.243896484375, 176.41859436035156, 1133.243896484375], "score": 0.9999879598617554}, {"category_id": 1, "poly": [176.31527709960938, 1137.04638671875, 1043.9735107421875, 1137.04638671875, 1043.9735107421875, 1422.5234375, 176.31527709960938, 1422.5234375], "score": 0.9999839067459106}, {"category_id": 1, "poly": [175.19686889648438, 1425.6923828125, 1043.77490234375, 1425.6923828125, 1043.77490234375, 1567.9383544921875, 175.19686889648438, 1567.9383544921875], "score": 0.9999608993530273}, {"category_id": 2, "poly": [46.6263427734375, 1717.93212890625, 1142.532958984375, 1717.93212890625, 1142.532958984375, 1763.221435546875, 46.6263427734375, 1763.221435546875], "score": 0.9998235106468201}, {"category_id": 2, "poly": [522.332275390625, 97.51979064941406, 698.2937622070312, 97.51979064941406, 698.2937622070312, 115.27900695800781, 522.332275390625, 115.27900695800781], "score": 0.9945440292358398}, {"category_id": 2, "poly": [998.44140625, 93.58056640625, 1041.410400390625, 93.58056640625, 1041.410400390625, 119.96952819824219, 998.44140625, 119.96952819824219], "score": 0.37564584612846375}, {"category_id": 2, "poly": [522.0667724609375, 90.3890380859375, 1037.992431640625, 90.3890380859375, 1037.992431640625, 121.25892639160156, 522.0667724609375, 121.25892639160156], "score": 0.25465917587280273}, {"category_id": 15, "poly": [178.0, 171.0, 1041.0, 171.0, 1041.0, 197.0, 178.0, 197.0], "score": 0.97, "text": "the most serious and most inhumane criminals - in other words"}, {"category_id": 15, "poly": [174.0, 202.0, 1044.0, 202.0, 1044.0, 240.0, 174.0, 240.0], "score": 1.0, "text": "those who have perpetrated crimes against humanity - that is no"}, {"category_id": 15, "poly": [174.0, 240.0, 1042.0, 240.0, 1042.0, 272.0, 174.0, 272.0], "score": 0.98, "text": "more severe than how other criminals are treated. Even these"}, {"category_id": 15, "poly": [174.0, 277.0, 1041.0, 277.0, 1041.0, 309.0, 174.0, 309.0], "score": 0.99, "text": "cases ought to be subject to the statute of limitations: the degree"}, {"category_id": 15, "poly": [172.0, 311.0, 1046.0, 311.0, 1046.0, 349.0, 172.0, 349.0], "score": 0.99, "text": "of punishment ought not to be higher - which is to say, proportional"}, {"category_id": 15, "poly": [174.0, 349.0, 1042.0, 349.0, 1042.0, 381.0, 174.0, 381.0], "score": 0.99, "text": "to the crime - but ought, instead, to tend to become less; the"}, {"category_id": 15, "poly": [176.0, 384.0, 1041.0, 384.0, 1041.0, 416.0, 176.0, 416.0], "score": 0.99, "text": "idea ought to be abandoned that the monstrousness of such crimes"}, {"category_id": 15, "poly": [174.0, 422.0, 1044.0, 422.0, 1044.0, 454.0, 174.0, 454.0], "score": 0.98, "text": "justifies the punishment - and indeed, the most severe possible"}, {"category_id": 15, "poly": [174.0, 458.0, 321.0, 458.0, 321.0, 489.0, 174.0, 489.0], "score": 1.0, "text": "punishment."}, {"category_id": 15, "poly": [208.0, 489.0, 1043.0, 491.0, 1042.0, 523.0, 208.0, 521.0], "score": 0.97, "text": "Further conclusions can be drawn from my critique of retributivism"}, {"category_id": 15, "poly": [176.0, 531.0, 1041.0, 531.0, 1041.0, 562.0, 176.0, 562.0], "score": 0.99, "text": "as well as from my alternative proposal. At this point, I would like"}, {"category_id": 15, "poly": [174.0, 559.0, 1044.0, 563.0, 1044.0, 600.0, 174.0, 596.0], "score": 0.99, "text": "briefly to outline how the penal system should be reformed according"}, {"category_id": 15, "poly": [176.0, 602.0, 510.0, 602.0, 510.0, 634.0, 176.0, 634.0], "score": 0.99, "text": "to my alternative proposal."}, {"category_id": 15, "poly": [210.0, 636.0, 1041.0, 636.0, 1041.0, 668.0, 210.0, 668.0], "score": 1.0, "text": "1. There ought to be no fixed duration within the judgment for"}, {"category_id": 15, "poly": [178.0, 671.0, 1041.0, 671.0, 1041.0, 703.0, 178.0, 703.0], "score": 0.99, "text": "incarceration. Instead of designating a certain duration, the degree of"}, {"category_id": 15, "poly": [178.0, 709.0, 1041.0, 709.0, 1041.0, 741.0, 178.0, 741.0], "score": 0.98, "text": "punishment ought to be determined by a goal. The criminal ought to"}, {"category_id": 15, "poly": [176.0, 744.0, 1042.0, 744.0, 1042.0, 776.0, 176.0, 776.0], "score": 0.99, "text": "expiate the punishment for as long as he or she still poses more of a"}, {"category_id": 15, "poly": [174.0, 780.0, 1042.0, 778.0, 1043.0, 810.0, 174.0, 812.0], "score": 0.99, "text": "danger to the commonwealth than the other citizens do. In order for"}, {"category_id": 15, "poly": [173.0, 810.0, 1044.0, 814.0, 1044.0, 851.0, 172.0, 847.0], "score": 1.0, "text": "that to occur, the criterion employed to suspend punishment may"}, {"category_id": 15, "poly": [178.0, 851.0, 1041.0, 851.0, 1041.0, 883.0, 178.0, 883.0], "score": 0.99, "text": "not be the absolute safety of society, because every “normal\" citizen"}, {"category_id": 15, "poly": [178.0, 891.0, 1039.0, 891.0, 1039.0, 917.0, 178.0, 917.0], "score": 0.98, "text": "who consistently remains true to the law could, at any time, commit a"}, {"category_id": 15, "poly": [174.0, 922.0, 1041.0, 922.0, 1041.0, 960.0, 174.0, 960.0], "score": 1.0, "text": "crime. Even now, punishments are reduced by sentences of parole,"}, {"category_id": 15, "poly": [176.0, 958.0, 1041.0, 958.0, 1041.0, 990.0, 176.0, 990.0], "score": 0.99, "text": "and in the case of good behavior prisoners are released before their"}, {"category_id": 15, "poly": [174.0, 996.0, 1044.0, 996.0, 1044.0, 1028.0, 174.0, 1028.0], "score": 0.99, "text": "sentences are up. Others are allowed to work outside the prison"}, {"category_id": 15, "poly": [176.0, 1029.0, 1043.0, 1033.0, 1042.0, 1065.0, 176.0, 1061.0], "score": 0.99, "text": "during the day. Such leeway, already customary nowadays, ought"}, {"category_id": 15, "poly": [173.0, 1063.0, 1046.0, 1065.0, 1046.0, 1103.0, 172.0, 1101.0], "score": 0.98, "text": "to be expanded to the general abolition of every designation of"}, {"category_id": 15, "poly": [175.0, 1102.0, 293.0, 1107.0, 292.0, 1135.0, 174.0, 1130.0], "score": 1.0, "text": "duration."}, {"category_id": 15, "poly": [208.0, 1140.0, 1044.0, 1140.0, 1044.0, 1172.0, 208.0, 1172.0], "score": 0.99, "text": "2. The principle of proportionality between crime and punishment"}, {"category_id": 15, "poly": [174.0, 1174.0, 1043.0, 1178.0, 1042.0, 1209.0, 174.0, 1206.0], "score": 0.99, "text": "has to be rejected. Admittedly, it is to be expected that, on average,"}, {"category_id": 15, "poly": [176.0, 1211.0, 1042.0, 1211.0, 1042.0, 1243.0, 176.0, 1243.0], "score": 0.99, "text": "thieves can be rehabilitated in a shorter period of time than multiple"}, {"category_id": 15, "poly": [178.0, 1251.0, 1039.0, 1251.0, 1039.0, 1277.0, 178.0, 1277.0], "score": 0.99, "text": "murderers who have tortured their victims. One would, therefore,"}, {"category_id": 15, "poly": [176.0, 1284.0, 1046.0, 1284.0, 1046.0, 1316.0, 176.0, 1316.0], "score": 0.99, "text": "probably observe a clear, statistical correlation between the gravity of"}, {"category_id": 15, "poly": [176.0, 1318.0, 1042.0, 1318.0, 1042.0, 1350.0, 176.0, 1350.0], "score": 0.99, "text": "the deed and the length of the process of rehabilitation. But this link"}, {"category_id": 15, "poly": [174.0, 1356.0, 1042.0, 1356.0, 1042.0, 1388.0, 174.0, 1388.0], "score": 1.0, "text": "should not be a matter of principle, and there would certainly also be"}, {"category_id": 15, "poly": [176.0, 1393.0, 319.0, 1393.0, 319.0, 1425.0, 176.0, 1425.0], "score": 1.0, "text": "exceptions."}, {"category_id": 15, "poly": [210.0, 1427.0, 1035.0, 1427.0, 1035.0, 1459.0, 210.0, 1459.0], "score": 0.98, "text": "3. A reform of penal law ought not to involve punishments becom"}, {"category_id": 15, "poly": [176.0, 1462.0, 1041.0, 1462.0, 1041.0, 1500.0, 176.0, 1500.0], "score": 0.99, "text": "ing generally severer or generally milder. In effect, some punishments"}, {"category_id": 15, "poly": [172.0, 1498.0, 1042.0, 1498.0, 1042.0, 1536.0, 172.0, 1536.0], "score": 0.99, "text": "would become milder, others severer, all depending on the behavior"}, {"category_id": 15, "poly": [173.0, 1534.0, 489.0, 1536.0, 489.0, 1568.0, 172.0, 1566.0], "score": 0.99, "text": "of the individual convict."}, {"category_id": 15, "poly": [47.0, 1718.0, 1140.0, 1718.0, 1140.0, 1742.0, 47.0, 1742.0], "score": 0.99, "text": "Downloaded from https://www.cambridge.org/core. Universiteit Leiden / LUMC, on 29 Nov 2019 at 23:02:12, subject to the Cambridge Core"}, {"category_id": 15, "poly": [47.0, 1740.0, 947.0, 1740.0, 947.0, 1764.0, 47.0, 1764.0], "score": 0.99, "text": "terms of use, available at https://www.cambridge.org/core/terms. https://doi.org/10.1017/CB09780511770425.012"}, {"category_id": 15, "poly": [521.0, 96.0, 698.0, 96.0, 698.0, 122.0, 521.0, 122.0], "score": 1.0, "text": "CONCLUSION"}, {"category_id": 15, "poly": [997.0, 85.0, 1050.0, 93.0, 1043.0, 135.0, 990.0, 126.0], "score": 1.0, "text": "189"}, {"category_id": 15, "poly": [519.0, 96.0, 698.0, 96.0, 698.0, 120.0, 519.0, 120.0], "score": 1.0, "text": "CONCLUSION"}, {"category_id": 15, "poly": [994.0, 90.0, 1042.0, 90.0, 1042.0, 128.0, 994.0, 128.0], "score": 0.94, "text": "18c"}], "judge": {"final_judge": false, "search_judge": true, "score_judge": false, "cannot_find": false, "search_list": [[36.69752502441406, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/9781316090930.077.pdf_10.jpg"], [40.50537109375, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/S0021875817000378.pdf_1.jpg"], [41.02143096923828, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/CBO9781139088398.007.pdf_29.jpg"], [42.51865005493164, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/9b04f5410f803df1f5f93aa3778059efe90db326c19f5d7ba85414c96739b3bd.pdf_5.jpg"], [42.62116241455078, 0.8585572842998586, 0.8571428571428571, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/CBO9780511551246.006.pdf_7.jpg"], [43.375648498535156, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-17538478.pdf_170.jpg"], [44.16658020019531, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/s0308-521x%2898%2900056-0.pdf_3.jpg"], [48.920310974121094, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-16659265.pdf_116.jpg"], [53.29656982421875, 0.9763765850269237, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/56cc29cee9e859a5314952b8184da882e2482d7bc17234b4ca333bfffe5f74f3.pdf_25.jpg"], [55.937252044677734, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/cd.56.pdf_7.jpg"]]}, "page_info": {"page_no": 2, "height": 1800, "width": 1200}}, {"layout_dets": [{"category_id": 1, "poly": [185.3686065673828, 165.37498474121094, 1052.01220703125, 165.37498474121094, 1052.01220703125, 414.7894287109375, 185.3686065673828, 414.7894287109375], "score": 0.9999960660934448}, {"category_id": 1, "poly": [185.46505737304688, 416.8759460449219, 1052.6064453125, 416.8759460449219, 1052.6064453125, 1062.604736328125, 185.46505737304688, 1062.604736328125], "score": 0.9999892115592957}, {"category_id": 1, "poly": [213.8837127685547, 1301.325927734375, 1022.60888671875, 1301.325927734375, 1022.60888671875, 1606.255126953125, 213.8837127685547, 1606.255126953125], "score": 0.9999889135360718}, {"category_id": 1, "poly": [184.8633270263672, 1065.1739501953125, 1052.293701171875, 1065.1739501953125, 1052.293701171875, 1281.30322265625, 184.8633270263672, 1281.30322265625], "score": 0.9999887943267822}, {"category_id": 2, "poly": [529.9339599609375, 96.61219024658203, 706.3160400390625, 96.61219024658203, 706.3160400390625, 116.91444396972656, 529.9339599609375, 116.91444396972656], "score": 0.9997703433036804}, {"category_id": 2, "poly": [44.089691162109375, 1716.933837890625, 1143.9229736328125, 1716.933837890625, 1143.9229736328125, 1764.7646484375, 44.089691162109375, 1764.7646484375], "score": 0.9995508193969727}, {"category_id": 2, "poly": [188.29161071777344, 96.93939971923828, 233.20518493652344, 96.93939971923828, 233.20518493652344, 119.71417236328125, 188.29161071777344, 119.71417236328125], "score": 0.9983097910881042}, {"category_id": 15, "poly": [214.0, 167.0, 1052.0, 165.0, 1052.0, 202.0, 214.0, 204.0], "score": 0.99, "text": "4. Psychological assessments of the convicts should occur regularly"}, {"category_id": 15, "poly": [186.0, 204.0, 1052.0, 204.0, 1052.0, 236.0, 186.0, 236.0], "score": 0.98, "text": "and they should be thorough. A process such as the following is"}, {"category_id": 15, "poly": [182.0, 238.0, 1056.0, 236.0, 1056.0, 274.0, 182.0, 276.0], "score": 0.99, "text": "conceivable. At the beginning of serving a sentence the criterion for"}, {"category_id": 15, "poly": [184.0, 278.0, 1054.0, 278.0, 1054.0, 309.0, 184.0, 309.0], "score": 1.0, "text": "a discharge would be especially strong. The criterion would weaken as"}, {"category_id": 15, "poly": [186.0, 313.0, 1056.0, 313.0, 1056.0, 345.0, 186.0, 345.0], "score": 0.98, "text": "time passes and would finally reverse so that gradually the burden of"}, {"category_id": 15, "poly": [184.0, 347.0, 1054.0, 343.0, 1054.0, 381.0, 184.0, 384.0], "score": 0.99, "text": "proof might stand on the side of the commonwealth to prove that the"}, {"category_id": 15, "poly": [186.0, 382.0, 671.0, 386.0, 671.0, 418.0, 186.0, 414.0], "score": 1.0, "text": "convict must, in fact, remain in prison."}, {"category_id": 15, "poly": [212.0, 418.0, 1052.0, 416.0, 1052.0, 454.0, 212.0, 456.0], "score": 1.0, "text": " 5. Retributivism likes to contend that only retaliation is just for the"}, {"category_id": 15, "poly": [186.0, 458.0, 1050.0, 458.0, 1050.0, 489.0, 186.0, 489.0], "score": 0.98, "text": "victim and every other punishment would be unjust, for the criminal"}, {"category_id": 15, "poly": [186.0, 491.0, 1050.0, 491.0, 1050.0, 523.0, 186.0, 523.0], "score": 0.99, "text": "as well as for the victim. In the current penal system, this argument"}, {"category_id": 15, "poly": [184.0, 531.0, 1052.0, 527.0, 1052.0, 559.0, 184.0, 563.0], "score": 0.99, "text": "rather appears to be an empty consolation for the fate of the victim"}, {"category_id": 15, "poly": [186.0, 564.0, 1050.0, 564.0, 1050.0, 596.0, 186.0, 596.0], "score": 0.98, "text": "that turns out to be scandalous. Anyone who suffers grave bodily"}, {"category_id": 15, "poly": [186.0, 600.0, 1050.0, 600.0, 1050.0, 632.0, 186.0, 632.0], "score": 0.99, "text": "injury is better off having it occur in the course of an automobile"}, {"category_id": 15, "poly": [186.0, 638.0, 1050.0, 638.0, 1050.0, 664.0, 186.0, 664.0], "score": 0.97, "text": "accident for which he or she is not liable, rather than by a serial"}, {"category_id": 15, "poly": [184.0, 669.0, 1052.0, 669.0, 1052.0, 707.0, 184.0, 707.0], "score": 0.99, "text": "killer, because the damages awarded to victims of criminal acts are"}, {"category_id": 15, "poly": [188.0, 709.0, 1050.0, 709.0, 1050.0, 741.0, 188.0, 741.0], "score": 0.99, "text": "especially low. One should make it clear to the public what a criminal"}, {"category_id": 15, "poly": [184.0, 742.0, 1052.0, 742.0, 1052.0, 780.0, 184.0, 780.0], "score": 0.99, "text": "trial really means. Whereas potential compensation for damages,"}, {"category_id": 15, "poly": [184.0, 778.0, 1052.0, 778.0, 1052.0, 816.0, 184.0, 816.0], "score": 1.0, "text": "including pain and suffering, should satisfy the claims of the victims,"}, {"category_id": 15, "poly": [184.0, 814.0, 1054.0, 810.0, 1054.0, 847.0, 184.0, 851.0], "score": 0.99, "text": "punishment applies only to the interests of the commonwealth as"}, {"category_id": 15, "poly": [180.0, 847.0, 1056.0, 849.0, 1056.0, 887.0, 180.0, 885.0], "score": 0.99, "text": "a whole regarding public security. Therefore, a twofold process is"}, {"category_id": 15, "poly": [188.0, 887.0, 1050.0, 887.0, 1050.0, 919.0, 188.0, 919.0], "score": 0.99, "text": "conducted, even if both concerns are to be dealt with in the same"}, {"category_id": 15, "poly": [188.0, 924.0, 1050.0, 924.0, 1050.0, 956.0, 188.0, 956.0], "score": 0.98, "text": "trial. Instead of exclusively and systematically calling for harsher"}, {"category_id": 15, "poly": [184.0, 958.0, 1054.0, 958.0, 1054.0, 996.0, 184.0, 996.0], "score": 0.98, "text": "punishments as a way to win popular support, politicians should"}, {"category_id": 15, "poly": [184.0, 994.0, 1050.0, 996.0, 1050.0, 1029.0, 184.0, 1027.0], "score": 0.99, "text": "primarily think of a better and more respectful compensation for"}, {"category_id": 15, "poly": [184.0, 1029.0, 330.0, 1033.0, 329.0, 1063.0, 183.0, 1059.0], "score": 0.96, "text": "the victims."}, {"category_id": 15, "poly": [216.0, 1309.0, 1016.0, 1309.0, 1016.0, 1335.0, 216.0, 1335.0], "score": 0.98, "text": "I find no intuitive plausibility at all in first basing criminal liability"}, {"category_id": 15, "poly": [216.0, 1339.0, 1020.0, 1339.0, 1020.0, 1371.0, 216.0, 1371.0], "score": 0.99, "text": "on moral blameworthiness, but then basing moral blameworthiness in"}, {"category_id": 15, "poly": [214.0, 1373.0, 1020.0, 1371.0, 1020.0, 1402.0, 214.0, 1404.0], "score": 0.99, "text": "turn upon the actual harm or absence of harm caused. The ancient"}, {"category_id": 15, "poly": [216.0, 1404.0, 1018.0, 1406.0, 1018.0, 1438.0, 216.0, 1436.0], "score": 0.99, "text": "view, that liability should be based not upon blameworthiness at all but"}, {"category_id": 15, "poly": [216.0, 1440.0, 1018.0, 1440.0, 1018.0, 1472.0, 216.0, 1472.0], "score": 1.0, "text": "instead directly upon the amount of harm caused, seems to me more"}, {"category_id": 15, "poly": [218.0, 1472.0, 1020.0, 1472.0, 1020.0, 1504.0, 218.0, 1504.0], "score": 0.99, "text": "honest, though no more plausible. It seems almost as if the retentionist"}, {"category_id": 15, "poly": [216.0, 1506.0, 1018.0, 1506.0, 1018.0, 1538.0, 216.0, 1538.0], "score": 1.0, "text": "is so fixated on actual harm that he keeps searching for the question"}, {"category_id": 15, "poly": [216.0, 1539.0, 1018.0, 1539.0, 1018.0, 1571.0, 216.0, 1571.0], "score": 0.99, "text": "to which it is the right answer. Not the question: “What ought to be"}, {"category_id": 15, "poly": [218.0, 1573.0, 1018.0, 1573.0, 1018.0, 1605.0, 218.0, 1605.0], "score": 0.99, "text": "the basis of criminal liability?” Moral blameworthiness is a plausible"}, {"category_id": 15, "poly": [214.0, 1063.0, 1052.0, 1065.0, 1052.0, 1103.0, 214.0, 1101.0], "score": 1.0, "text": "6. An attempt ought always to be punished in the same degree as"}, {"category_id": 15, "poly": [186.0, 1104.0, 1052.0, 1104.0, 1052.0, 1136.0, 186.0, 1136.0], "score": 0.99, "text": "the crime itself. This is not the case nowadays. Instead, attempts at"}, {"category_id": 15, "poly": [186.0, 1140.0, 1052.0, 1140.0, 1052.0, 1172.0, 186.0, 1172.0], "score": 0.98, "text": "only some of the graver crimes are punishable, while carrying a lesser"}, {"category_id": 15, "poly": [186.0, 1176.0, 1054.0, 1176.0, 1054.0, 1208.0, 186.0, 1208.0], "score": 0.99, "text": "degree of punishment. Feinberg convincingly traced back this situ-"}, {"category_id": 15, "poly": [184.0, 1211.0, 1052.0, 1209.0, 1052.0, 1241.0, 184.0, 1243.0], "score": 0.99, "text": "ation to the conjunction that retributivism wants to create between the"}, {"category_id": 15, "poly": [182.0, 1247.0, 849.0, 1241.0, 849.0, 1279.0, 182.0, 1284.0], "score": 0.99, "text": "gravity of a deed and the wickedness of the criminal:"}, {"category_id": 15, "poly": [531.0, 96.0, 705.0, 96.0, 705.0, 122.0, 531.0, 122.0], "score": 1.0, "text": "CONCLUSION"}, {"category_id": 15, "poly": [47.0, 1718.0, 1140.0, 1718.0, 1140.0, 1742.0, 47.0, 1742.0], "score": 0.99, "text": "Downloaded from https://www.cambridge.org/core. Universiteit Leiden / LUMC, on 29 Nov 2019 at 23:02:12, subject to the Cambridge Core"}, {"category_id": 15, "poly": [47.0, 1740.0, 947.0, 1740.0, 947.0, 1764.0, 47.0, 1764.0], "score": 0.99, "text": "terms of use, available at https://www.cambridge.org/core/terms. https://doi.org/10.1017/CB09780511770425.012"}, {"category_id": 15, "poly": [186.0, 94.0, 238.0, 94.0, 238.0, 133.0, 186.0, 133.0], "score": 1.0, "text": "190"}], "judge": {"final_judge": true, "search_judge": true, "score_judge": true, "cannot_find": false, "search_list": [[41.68920135498047, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/CBO9781139088398.007.pdf_29.jpg"], [43.99999237060547, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-16659265.pdf_116.jpg"], [47.899986267089844, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/S0021875817000378.pdf_1.jpg"], [53.44574737548828, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-17538478.pdf_170.jpg"], [53.91181182861328, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/3055e0d8130c7a197bc6e020afe9bea1edef31f33b720cc326dd404d8e3f82d5.pdf_5.jpg"], [58.740882873535156, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-16579787.pdf_143.jpg"], [59.2061767578125, 0.9889988998899888, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_needrop_coco/val/GTM_036_-_ISBN978-3-662-41914-4_-_John_L._Kelley,_Isaac_Namioka_-_Linear_Topological_Spaces.pdf_103.jpg"], [59.52695083618164, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/9781316090930.077.pdf_10.jpg"], [60.09637451171875, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/s0308-521x%2898%2900056-0.pdf_3.jpg"], [60.416297912597656, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-17906973.pdf_256.jpg"]]}, "page_info": {"page_no": 3, "height": 1800, "width": 1200}}, {"layout_dets": [{"category_id": 1, "poly": [208.5929718017578, 165.96209716796875, 1010.32470703125, 165.96209716796875, 1010.32470703125, 329.7188415527344, 208.5929718017578, 329.7188415527344], "score": 0.9999969005584717}, {"category_id": 2, "poly": [174.37802124023438, 1464.2734375, 1045.14501953125, 1464.2734375, 1045.14501953125, 1605.363037109375, 174.37802124023438, 1605.363037109375], "score": 0.9999966621398926}, {"category_id": 1, "poly": [177.10716247558594, 609.9269409179688, 1042.040771484375, 609.9269409179688, 1042.040771484375, 858.5154418945312, 177.10716247558594, 858.5154418945312], "score": 0.9999957084655762}, {"category_id": 1, "poly": [177.40283203125, 861.0873413085938, 1045.0654296875, 861.0873413085938, 1045.0654296875, 1398.7373046875, 177.40283203125, 1398.7373046875], "score": 0.9999825358390808}, {"category_id": 1, "poly": [177.2109375, 502.820068359375, 1042.8372802734375, 502.820068359375, 1042.8372802734375, 604.543212890625, 177.2109375, 604.543212890625], "score": 0.999982476234436}, {"category_id": 1, "poly": [175.66241455078125, 356.98065185546875, 1042.0137939453125, 356.98065185546875, 1042.0137939453125, 498.08172607421875, 175.66241455078125, 498.08172607421875], "score": 0.999974250793457}, {"category_id": 2, "poly": [522.0990600585938, 96.80659484863281, 698.2033081054688, 96.80659484863281, 698.2033081054688, 116.644287109375, 522.0990600585938, 116.644287109375], "score": 0.9998497366905212}, {"category_id": 2, "poly": [46.28608703613281, 1718.5791015625, 1142.74658203125, 1718.5791015625, 1142.74658203125, 1762.618408203125, 46.28608703613281, 1762.618408203125], "score": 0.999698281288147}, {"category_id": 2, "poly": [998.3409423828125, 96.98823547363281, 1038.1510009765625, 96.98823547363281, 1038.1510009765625, 120.72357177734375, 998.3409423828125, 120.72357177734375], "score": 0.9855232238769531}, {"category_id": 15, "poly": [210.0, 171.0, 1009.0, 171.0, 1009.0, 197.0, 210.0, 197.0], "score": 0.98, "text": "answer to that question. Not the question: “\"What is the basis of moral"}, {"category_id": 15, "poly": [206.0, 199.0, 1009.0, 201.0, 1009.0, 233.0, 206.0, 231.0], "score": 0.97, "text": "blameworthiness?” The traditional multiplicity of culpability conditions,"}, {"category_id": 15, "poly": [208.0, 234.0, 1009.0, 234.0, 1009.0, 272.0, 208.0, 272.0], "score": 1.0, "text": "motives, mitigations, aggravations, and so on, answers that question. How"}, {"category_id": 15, "poly": [208.0, 268.0, 1009.0, 268.0, 1009.0, 300.0, 208.0, 300.0], "score": 0.98, "text": "about the question: “What is a necessary condition for tort liability?\" Now,"}, {"category_id": 15, "poly": [210.0, 304.0, 429.0, 304.0, 429.0, 330.0, 210.0, 330.0], "score": 0.97, "text": "that is more like it.'"}, {"category_id": 15, "poly": [172.0, 1463.0, 1046.0, 1461.0, 1046.0, 1492.0, 173.0, 1494.0], "score": 0.98, "text": "1. Joel Feinberg, Problems at the roots of law: essays in legal and political theory (Oxford: Oxford"}, {"category_id": 15, "poly": [203.0, 1489.0, 512.0, 1491.0, 512.0, 1523.0, 202.0, 1521.0], "score": 1.0, "text": "University Press, 2003), p. 100."}, {"category_id": 15, "poly": [171.0, 1517.0, 778.0, 1521.0, 778.0, 1553.0, 171.0, 1549.0], "score": 0.95, "text": "2. Cf. ZeF Ak vIl1:366. Practical philosophy, ed. Gregor, p. 355."}, {"category_id": 15, "poly": [171.0, 1547.0, 1046.0, 1543.0, 1046.0, 1575.0, 171.0, 1579.0], "score": 0.98, "text": " 3. Cf. Book 2, Chapter 1, I1.2 of Hugo Grotius, The rights of war and peace, ed. Richard Tuck"}, {"category_id": 15, "poly": [204.0, 1575.0, 788.0, 1575.0, 788.0, 1607.0, 204.0, 1607.0], "score": 0.96, "text": "(3 vols., Indianapolis: Liberty Fund, Inc., 2005), pp. 395-6."}, {"category_id": 15, "poly": [210.0, 611.0, 1044.0, 611.0, 1044.0, 643.0, 210.0, 643.0], "score": 0.99, "text": "First, penal law cannot be about the (purely moral) wickedness of"}, {"category_id": 15, "poly": [176.0, 645.0, 1041.0, 645.0, 1041.0, 677.0, 176.0, 677.0], "score": 1.0, "text": "human beings, but instead only about the observance of the laws or"}, {"category_id": 15, "poly": [174.0, 681.0, 1042.0, 679.0, 1043.0, 716.0, 174.0, 718.0], "score": 0.97, "text": "about the infringement of right. Even if we were all “devils,\"? as Kant"}, {"category_id": 15, "poly": [174.0, 720.0, 1044.0, 720.0, 1044.0, 752.0, 174.0, 752.0], "score": 0.99, "text": "notes in Toward perpetual peace, it would still not mean that we all ought"}, {"category_id": 15, "poly": [174.0, 754.0, 1044.0, 756.0, 1044.0, 788.0, 174.0, 786.0], "score": 0.99, "text": "to be punished with deterrence in mind, before having committed any"}, {"category_id": 15, "poly": [174.0, 786.0, 1044.0, 789.0, 1044.0, 827.0, 174.0, 823.0], "score": 0.99, "text": "misdeed. Only those who cannot be hindered from committing"}, {"category_id": 15, "poly": [174.0, 827.0, 889.0, 825.0, 889.0, 857.0, 174.0, 859.0], "score": 1.0, "text": "crimes by moral or external reasons should be punished."}, {"category_id": 15, "poly": [212.0, 866.0, 1037.0, 866.0, 1037.0, 892.0, 212.0, 892.0], "score": 0.98, "text": "Secondly, it is not retributivism, but the justification of punishment"}, {"category_id": 15, "poly": [174.0, 900.0, 1042.0, 900.0, 1042.0, 932.0, 174.0, 932.0], "score": 0.98, "text": "as a rehabilitation that is compatible with that path via which Kant"}, {"category_id": 15, "poly": [174.0, 936.0, 1041.0, 936.0, 1041.0, 968.0, 174.0, 968.0], "score": 0.98, "text": "wants to reach global “perpetual peace,”\" the condition by which the"}, {"category_id": 15, "poly": [176.0, 971.0, 1041.0, 971.0, 1041.0, 1003.0, 176.0, 1003.0], "score": 1.0, "text": "state of law would reign over the entire world. The modern tradition"}, {"category_id": 15, "poly": [176.0, 1009.0, 1041.0, 1009.0, 1041.0, 1041.0, 176.0, 1041.0], "score": 0.99, "text": "of natural right that Kant critically draws upon recognizes three just"}, {"category_id": 15, "poly": [174.0, 1042.0, 1042.0, 1042.0, 1042.0, 1080.0, 174.0, 1080.0], "score": 0.98, "text": "intentions for waging war: legitimate self-defense, recovery of one's"}, {"category_id": 15, "poly": [176.0, 1080.0, 1041.0, 1080.0, 1041.0, 1112.0, 176.0, 1112.0], "score": 1.0, "text": "own goods stolen by the enemy and punishment of an unjust enemy.3"}, {"category_id": 15, "poly": [176.0, 1114.0, 1042.0, 1114.0, 1042.0, 1146.0, 176.0, 1146.0], "score": 0.98, "text": "This “punishment\" of the vanquished enemy is intended to mean"}, {"category_id": 15, "poly": [173.0, 1147.0, 1043.0, 1149.0, 1042.0, 1187.0, 172.0, 1185.0], "score": 0.99, "text": "deterrence by the theorists of just war - for instance, Hugo Grotius,"}, {"category_id": 15, "poly": [176.0, 1187.0, 1042.0, 1187.0, 1042.0, 1219.0, 176.0, 1219.0], "score": 1.0, "text": "Samuel von Pufendorf, Emer de Vattel, etc. The aim is a peace that is"}, {"category_id": 15, "poly": [174.0, 1221.0, 1042.0, 1221.0, 1042.0, 1258.0, 174.0, 1258.0], "score": 0.99, "text": "just toward both parties. In this respect, punishment is allowed only in"}, {"category_id": 15, "poly": [174.0, 1260.0, 1042.0, 1260.0, 1042.0, 1292.0, 174.0, 1292.0], "score": 0.99, "text": "so far as to bring about security for the victor. This theory pursues the"}, {"category_id": 15, "poly": [174.0, 1296.0, 1042.0, 1292.0, 1043.0, 1324.0, 174.0, 1328.0], "score": 0.98, "text": "goal of ensuring that no future injustice is carried out that would"}, {"category_id": 15, "poly": [172.0, 1329.0, 1044.0, 1327.0, 1044.0, 1365.0, 173.0, 1367.0], "score": 0.99, "text": "present a just ground for a further war. If this deterrent intent turns"}, {"category_id": 15, "poly": [174.0, 1365.0, 1043.0, 1369.0, 1042.0, 1401.0, 174.0, 1397.0], "score": 0.99, "text": "out to be efficacious, there will then be a continuously decreasing"}, {"category_id": 15, "poly": [206.0, 499.0, 1043.0, 501.0, 1042.0, 540.0, 206.0, 538.0], "score": 0.98, "text": "Beyond these concrete suggestions for the reform of penal law, as"}, {"category_id": 15, "poly": [174.0, 538.0, 1044.0, 538.0, 1044.0, 576.0, 174.0, 576.0], "score": 1.0, "text": "the result of my inquiry I must address four points of more general"}, {"category_id": 15, "poly": [175.0, 575.0, 278.0, 580.0, 277.0, 608.0, 174.0, 603.0], "score": 1.0, "text": "interest."}, {"category_id": 15, "poly": [176.0, 362.0, 1041.0, 362.0, 1041.0, 388.0, 176.0, 388.0], "score": 0.99, "text": "In this,modern retributivism encounters the question of how the"}, {"category_id": 15, "poly": [176.0, 396.0, 1041.0, 396.0, 1041.0, 428.0, 176.0, 428.0], "score": 0.99, "text": "inner, moral guilt of a person should be punished in a legal system,"}, {"category_id": 15, "poly": [174.0, 431.0, 1042.0, 431.0, 1042.0, 463.0, 174.0, 463.0], "score": 0.99, "text": "if the system intends to be in charge only of freedom of action, and"}, {"category_id": 15, "poly": [173.0, 465.0, 373.0, 469.0, 373.0, 501.0, 172.0, 497.0], "score": 0.98, "text": "not of morality."}, {"category_id": 15, "poly": [521.0, 96.0, 698.0, 96.0, 698.0, 122.0, 521.0, 122.0], "score": 1.0, "text": "CONCLUSION"}, {"category_id": 15, "poly": [47.0, 1718.0, 1140.0, 1718.0, 1140.0, 1742.0, 47.0, 1742.0], "score": 0.99, "text": "Downloaded from https://www.cambridge.org/core. Universiteit Leiden / LUMC, on 29 Nov 2019 at 23:02:12, subject to the Cambridge Core"}, {"category_id": 15, "poly": [47.0, 1740.0, 947.0, 1740.0, 947.0, 1764.0, 47.0, 1764.0], "score": 0.99, "text": "terms of use, available at https://www.cambridge.org/core/terms. https://doi.org/10.1017/CB09780511770425.012"}, {"category_id": 15, "poly": [994.0, 94.0, 1042.0, 94.0, 1042.0, 135.0, 994.0, 135.0], "score": 1.0, "text": "191"}], "judge": {"final_judge": true, "search_judge": true, "score_judge": true, "cannot_find": false, "search_list": [[42.49473571777344, 0.9999999999999999, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/cbo9780511760433.011.pdf_6.jpg"], [45.52565383911133, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/9781316090930.077.pdf_10.jpg"], [48.47557067871094, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/S0021875817000378.pdf_1.jpg"], [57.737430572509766, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/CBO9781139088398.007.pdf_29.jpg"], [63.47295379638672, 0.8585572842998586, 0.8571428571428571, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/CBO9780511551246.006.pdf_7.jpg"], [67.77276611328125, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/9b04f5410f803df1f5f93aa3778059efe90db326c19f5d7ba85414c96739b3bd.pdf_5.jpg"], [68.51680755615234, 0.7508250825082508, 0.8333333333333333, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-17460514.pdf_136.jpg"], [69.3848876953125, 0.841645464856083, 0.894736842105263, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-21539592.pdf_118.jpg"], [71.19905853271484, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/s0308-521x%2898%2900056-0.pdf_3.jpg"], [72.05766296386719, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-16659265.pdf_116.jpg"]]}, "page_info": {"page_no": 4, "height": 1800, "width": 1200}}, {"layout_dets": [{"category_id": 1, "poly": [184.727783203125, 271.4600830078125, 1052.316650390625, 271.4600830078125, 1052.316650390625, 1029.473388671875, 184.727783203125, 1029.473388671875], "score": 0.9999801516532898}, {"category_id": 1, "poly": [186.22146606445312, 167.005859375, 1051.9786376953125, 167.005859375, 1051.9786376953125, 273.18701171875, 186.22146606445312, 273.18701171875], "score": 0.999976634979248}, {"category_id": 1, "poly": [184.1583251953125, 1198.971923828125, 1051.592529296875, 1198.971923828125, 1051.592529296875, 1379.938232421875, 184.1583251953125, 1379.938232421875], "score": 0.99996417760849}, {"category_id": 1, "poly": [218.41763305664062, 1050.196044921875, 1020.513916015625, 1050.196044921875, 1020.513916015625, 1179.5579833984375, 218.41763305664062, 1179.5579833984375], "score": 0.9999620318412781}, {"category_id": 2, "poly": [530.0177612304688, 96.61994934082031, 705.89306640625, 96.61994934082031, 705.89306640625, 116.91352844238281, 530.0177612304688, 116.91352844238281], "score": 0.9999382495880127}, {"category_id": 2, "poly": [188.27479553222656, 97.35215759277344, 232.25900268554688, 97.35215759277344, 232.25900268554688, 120.34793090820312, 188.27479553222656, 120.34793090820312], "score": 0.9998762011528015}, {"category_id": 2, "poly": [183.3179931640625, 1571.567626953125, 757.7682495117188, 1571.567626953125, 757.7682495117188, 1605.43115234375, 183.3179931640625, 1605.43115234375], "score": 0.9998016357421875}, {"category_id": 2, "poly": [44.46903991699219, 1717.2734375, 1143.86669921875, 1717.2734375, 1143.86669921875, 1763.428466796875, 44.46903991699219, 1763.428466796875], "score": 0.999756932258606}, {"category_id": 1, "poly": [214.36976623535156, 1399.7822265625, 1021.4419555664062, 1399.7822265625, 1021.4419555664062, 1532.3251953125, 214.36976623535156, 1532.3251953125], "score": 0.9992384910583496}, {"category_id": 15, "poly": [218.0, 277.0, 1050.0, 277.0, 1050.0, 309.0, 218.0, 309.0], "score": 1.0, "text": "Let us now imagine what consequences a retributivist conception"}, {"category_id": 15, "poly": [186.0, 311.0, 1048.0, 311.0, 1048.0, 343.0, 186.0, 343.0], "score": 0.99, "text": "of punishment might have for this theory. If the vanquished enemy"}, {"category_id": 15, "poly": [186.0, 349.0, 1050.0, 349.0, 1050.0, 381.0, 186.0, 381.0], "score": 1.0, "text": "should fail to understand that the victor's case is just, the retributive"}, {"category_id": 15, "poly": [186.0, 386.0, 1048.0, 386.0, 1048.0, 418.0, 186.0, 418.0], "score": 0.99, "text": "punishment by the victor will be perceived by the vanquished as"}, {"category_id": 15, "poly": [186.0, 422.0, 1050.0, 422.0, 1050.0, 454.0, 186.0, 454.0], "score": 0.99, "text": "being unjust. Unlike in national law, in international law there are"}, {"category_id": 15, "poly": [184.0, 458.0, 1050.0, 458.0, 1050.0, 489.0, 184.0, 489.0], "score": 0.99, "text": "no higher-ranking judges, so that every sovereign is his or her own"}, {"category_id": 15, "poly": [184.0, 493.0, 1050.0, 493.0, 1050.0, 525.0, 184.0, 525.0], "score": 0.99, "text": "judge, and although there cannot be two parties whose suits are"}, {"category_id": 15, "poly": [186.0, 531.0, 1048.0, 531.0, 1048.0, 562.0, 186.0, 562.0], "score": 0.99, "text": "ultimately equally just, there can be two bona fide parties waging war"}, {"category_id": 15, "poly": [184.0, 562.0, 1048.0, 562.0, 1048.0, 600.0, 184.0, 600.0], "score": 1.0, "text": "whose reasons for war appear completely legitimate and prima facie"}, {"category_id": 15, "poly": [186.0, 604.0, 1048.0, 604.0, 1048.0, 630.0, 186.0, 630.0], "score": 0.98, "text": "just. Unlike a punishment that is meant to deter and to protect against"}, {"category_id": 15, "poly": [182.0, 634.0, 1050.0, 636.0, 1050.0, 668.0, 182.0, 666.0], "score": 0.99, "text": "the recurrence of the grounds that led to war, retributivism requires"}, {"category_id": 15, "poly": [184.0, 669.0, 1052.0, 671.0, 1052.0, 705.0, 184.0, 703.0], "score": 0.99, "text": "the vanquished not only to assume liability for all damages caused in"}, {"category_id": 15, "poly": [186.0, 709.0, 1052.0, 709.0, 1052.0, 741.0, 186.0, 741.0], "score": 0.99, "text": "the war (compensation, reparations, etc.), but also to serve a severe"}, {"category_id": 15, "poly": [186.0, 744.0, 1048.0, 744.0, 1048.0, 776.0, 186.0, 776.0], "score": 0.99, "text": "punishment. If the vanquished enemies waged the war in good faith,"}, {"category_id": 15, "poly": [186.0, 780.0, 1050.0, 780.0, 1050.0, 812.0, 186.0, 812.0], "score": 1.0, "text": "this retributive punishment will then be perceived by them to be"}, {"category_id": 15, "poly": [188.0, 819.0, 1048.0, 819.0, 1048.0, 846.0, 188.0, 846.0], "score": 0.98, "text": "unjust and thus may consitute a possible causa iusta for a future war."}, {"category_id": 15, "poly": [182.0, 847.0, 1050.0, 849.0, 1050.0, 887.0, 182.0, 885.0], "score": 0.99, "text": "For this reason, such a retributive punishment stumbles into a contra-"}, {"category_id": 15, "poly": [186.0, 889.0, 1046.0, 889.0, 1046.0, 921.0, 186.0, 921.0], "score": 0.98, "text": "diction with Kant's primary objective, that is, with perpetual peace."}, {"category_id": 15, "poly": [184.0, 922.0, 1046.0, 922.0, 1046.0, 960.0, 184.0, 960.0], "score": 0.97, "text": "Kant's first preliminary article deprives every retaliation of its pre"}, {"category_id": 15, "poly": [182.0, 962.0, 1052.0, 958.0, 1052.0, 990.0, 182.0, 994.0], "score": 1.0, "text": "requisite by requiring that possible discoveries about the past should"}, {"category_id": 15, "poly": [182.0, 994.0, 593.0, 996.0, 592.0, 1028.0, 182.0, 1026.0], "score": 1.0, "text": "not be taken into consideration:"}, {"category_id": 15, "poly": [184.0, 167.0, 1050.0, 171.0, 1050.0, 203.0, 184.0, 199.0], "score": 0.98, "text": "number of wars. Since the victor has already obtained supremacy,"}, {"category_id": 15, "poly": [186.0, 202.0, 1050.0, 202.0, 1050.0, 240.0, 186.0, 240.0], "score": 0.99, "text": "the punishment is often mild. Herein lies the strategy of the theory"}, {"category_id": 15, "poly": [184.0, 240.0, 694.0, 240.0, 694.0, 278.0, 184.0, 278.0], "score": 0.99, "text": "of just war for the preservation of peace."}, {"category_id": 15, "poly": [184.0, 1202.0, 1050.0, 1204.0, 1050.0, 1236.0, 184.0, 1234.0], "score": 0.98, "text": "Even though Kant had the material claims of the warring parties"}, {"category_id": 15, "poly": [186.0, 1239.0, 1050.0, 1239.0, 1050.0, 1271.0, 186.0, 1271.0], "score": 0.98, "text": "in mind in this passage, this remark certainly also applies in the realm"}, {"category_id": 15, "poly": [186.0, 1275.0, 1050.0, 1275.0, 1050.0, 1307.0, 186.0, 1307.0], "score": 0.99, "text": "of penal law. Even in the Doctrine of right, Kant recommends the same"}, {"category_id": 15, "poly": [184.0, 1312.0, 1052.0, 1312.0, 1052.0, 1344.0, 184.0, 1344.0], "score": 1.0, "text": "strategy for (civil) peace on the national level, as the following repeat-"}, {"category_id": 15, "poly": [186.0, 1348.0, 501.0, 1348.0, 501.0, 1380.0, 186.0, 1380.0], "score": 0.99, "text": "edly cited passage shows:"}, {"category_id": 15, "poly": [216.0, 1048.0, 1020.0, 1050.0, 1020.0, 1082.0, 216.0, 1080.0], "score": 0.99, "text": "Causes for a future war, existent even if as yet unrecognized by the"}, {"category_id": 15, "poly": [218.0, 1084.0, 1020.0, 1084.0, 1020.0, 1116.0, 218.0, 1116.0], "score": 1.0, "text": "contracting parties themselves, are all annihilated by a peace treaty, no"}, {"category_id": 15, "poly": [214.0, 1116.0, 1020.0, 1118.0, 1020.0, 1149.0, 214.0, 1147.0], "score": 0.99, "text": " matter how acute and skilled the sleuthing by which they may be picked"}, {"category_id": 15, "poly": [216.0, 1149.0, 568.0, 1147.0, 568.0, 1179.0, 216.0, 1181.0], "score": 1.0, "text": "out of documents in archives.4"}, {"category_id": 15, "poly": [531.0, 96.0, 705.0, 96.0, 705.0, 122.0, 531.0, 122.0], "score": 1.0, "text": "CONCLUSION"}, {"category_id": 15, "poly": [186.0, 94.0, 236.0, 94.0, 236.0, 133.0, 186.0, 133.0], "score": 1.0, "text": "192"}, {"category_id": 15, "poly": [180.0, 1571.0, 761.0, 1573.0, 761.0, 1611.0, 180.0, 1609.0], "score": 0.95, "text": "4. ZeF Ak v1I:344f. Practial philosophy, ed. Gregor, p. 317."}, {"category_id": 15, "poly": [47.0, 1718.0, 1140.0, 1718.0, 1140.0, 1742.0, 47.0, 1742.0], "score": 0.99, "text": "Downloaded from https://www.cambridge.org/core. Universiteit Leiden / LUMC, on 29 Nov 2019 at 23:02:12, subject to the Cambridge Core"}, {"category_id": 15, "poly": [47.0, 1740.0, 947.0, 1740.0, 947.0, 1764.0, 47.0, 1764.0], "score": 0.99, "text": "terms of use, available at https://www.cambridge.org/core/terms. https://doi.org/10.1017/CB09780511770425.012"}, {"category_id": 15, "poly": [218.0, 1401.0, 1020.0, 1403.0, 1020.0, 1434.0, 217.0, 1432.0], "score": 0.99, "text": "Accordingly, every murderer - anyone who commits murder, orders"}, {"category_id": 15, "poly": [216.0, 1434.0, 1020.0, 1436.0, 1020.0, 1468.0, 216.0, 1466.0], "score": 0.99, "text": "it, or is an accomplice in it - must suffer death; this is what justice, as"}, {"category_id": 15, "poly": [221.0, 1472.0, 1016.0, 1472.0, 1016.0, 1498.0, 221.0, 1498.0], "score": 0.99, "text": "the idea of judicial authority, wills in accordance with universal laws that"}, {"category_id": 15, "poly": [219.0, 1502.0, 1016.0, 1502.0, 1016.0, 1534.0, 219.0, 1534.0], "score": 0.99, "text": "are grounded a priori. - If, however, the number of accomplices (correi)"}], "judge": {"final_judge": true, "search_judge": true, "score_judge": true, "cannot_find": false, "search_list": [[40.74649429321289, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/S0021875817000378.pdf_1.jpg"], [53.54270935058594, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-16659265.pdf_116.jpg"], [54.149959564208984, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/CBO9781139088398.007.pdf_29.jpg"], [54.50128173828125, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-17538478.pdf_170.jpg"], [57.446693420410156, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/9781316090930.077.pdf_10.jpg"], [58.946285247802734, 0.8585572842998586, 0.8571428571428571, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/CBO9780511551246.006.pdf_7.jpg"], [60.244834899902344, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/2f84035610deb9378036cb7a5498b885486cf8e0acfde755081b3484bcff8eed.pdf_15.jpg"], [62.2381591796875, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/3055e0d8130c7a197bc6e020afe9bea1edef31f33b720cc326dd404d8e3f82d5.pdf_5.jpg"], [65.60747528076172, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/j.1933-1592.2007.00043.x.pdf_10.jpg"], [66.23817443847656, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-16579787.pdf_143.jpg"]]}, "page_info": {"page_no": 5, "height": 1800, "width": 1200}}, {"layout_dets": [{"category_id": 1, "poly": [209.057373046875, 166.58755493164062, 1013.1092529296875, 166.58755493164062, 1013.1092529296875, 562.8868408203125, 209.057373046875, 562.8868408203125], "score": 0.9999966621398926}, {"category_id": 2, "poly": [174.6002655029297, 1438.158447265625, 1043.0218505859375, 1438.158447265625, 1043.0218505859375, 1605.958251953125, 174.6002655029297, 1605.958251953125], "score": 0.9999958872795105}, {"category_id": 1, "poly": [176.8579559326172, 584.760498046875, 1042.1436767578125, 584.760498046875, 1042.1436767578125, 689.208740234375, 176.8579559326172, 689.208740234375], "score": 0.9999874830245972}, {"category_id": 1, "poly": [177.20567321777344, 691.1987915039062, 1046.5733642578125, 691.1987915039062, 1046.5733642578125, 1374.988525390625, 177.20567321777344, 1374.988525390625], "score": 0.9999780654907227}, {"category_id": 2, "poly": [522.219482421875, 97.335205078125, 697.4724731445312, 97.335205078125, 697.4724731445312, 116.0723648071289, 522.219482421875, 116.0723648071289], "score": 0.9999210834503174}, {"category_id": 2, "poly": [46.051116943359375, 1718.153076171875, 1142.74169921875, 1718.153076171875, 1142.74169921875, 1762.79638671875, 46.051116943359375, 1762.79638671875], "score": 0.9998273849487305}, {"category_id": 2, "poly": [998.376708984375, 98.30541229248047, 1041.080810546875, 98.30541229248047, 1041.080810546875, 120.7616958618164, 998.376708984375, 120.7616958618164], "score": 0.9945587515830994}, {"category_id": 13, "poly": [873, 1547, 948, 1547, 948, 1575, 873, 1575], "score": 0.41, "latex": "{}^{2}33^{-8}5"}, {"category_id": 15, "poly": [208.0, 169.0, 1009.0, 169.0, 1009.0, 201.0, 208.0, 201.0], "score": 0.99, "text": "to such a deed is so great that the state, in order to have no such"}, {"category_id": 15, "poly": [206.0, 201.0, 1011.0, 199.0, 1011.0, 231.0, 206.0, 233.0], "score": 0.98, "text": "criminals in it, could soon find itself without subjects; and if the state"}, {"category_id": 15, "poly": [208.0, 232.0, 1011.0, 232.0, 1011.0, 264.0, 208.0, 264.0], "score": 0.99, "text": "still does not want to dissolve, that is, to pass over into the state of"}, {"category_id": 15, "poly": [210.0, 270.0, 1009.0, 270.0, 1009.0, 296.0, 210.0, 296.0], "score": 1.0, "text": "nature, which is far worse because there is no external justice at all in"}, {"category_id": 15, "poly": [208.0, 304.0, 1011.0, 304.0, 1011.0, 330.0, 208.0, 330.0], "score": 0.98, "text": "it . . . then the sovereign must also have it in his power, in this case of"}, {"category_id": 15, "poly": [208.0, 334.0, 1012.0, 334.0, 1012.0, 366.0, 208.0, 366.0], "score": 0.99, "text": "necessity (casus necessitatis), to assume the role of judge (to represent"}, {"category_id": 15, "poly": [208.0, 368.0, 1012.0, 368.0, 1012.0, 399.0, 208.0, 399.0], "score": 0.98, "text": "him) and pronounce a judgment that decrees for the criminals a"}, {"category_id": 15, "poly": [208.0, 401.0, 1011.0, 401.0, 1011.0, 433.0, 208.0, 433.0], "score": 0.99, "text": "sentence other than capital punishment, such as deportation, which"}, {"category_id": 15, "poly": [208.0, 435.0, 1012.0, 435.0, 1012.0, 467.0, 208.0, 467.0], "score": 0.99, "text": "still preserves the population. This cannot be done in accordance with"}, {"category_id": 15, "poly": [210.0, 467.0, 1012.0, 467.0, 1012.0, 499.0, 210.0, 499.0], "score": 0.99, "text": "public law but it can be done by an executive decree that is, by an act of"}, {"category_id": 15, "poly": [210.0, 501.0, 1011.0, 501.0, 1011.0, 532.0, 210.0, 532.0], "score": 0.99, "text": "the right of majesty which, as clemency, can always be exercised only in"}, {"category_id": 15, "poly": [210.0, 534.0, 405.0, 534.0, 405.0, 561.0, 210.0, 561.0], "score": 0.98, "text": "individual cases.5"}, {"category_id": 15, "poly": [173.0, 1434.0, 722.0, 1436.0, 722.0, 1470.0, 172.0, 1468.0], "score": 0.98, "text": "5. RL Ak vI:334. Practical philosophy, ed. Gregor, p. 475."}, {"category_id": 15, "poly": [171.0, 1461.0, 750.0, 1464.0, 750.0, 1496.0, 171.0, 1492.0], "score": 0.96, "text": "6. ZeF Ak v11:344f. Practical philosophy, ed. Gregor, p. 321."}, {"category_id": 15, "poly": [172.0, 1491.0, 1042.0, 1491.0, 1042.0, 1522.0, 172.0, 1522.0], "score": 0.97, "text": "7. Cf. RL Ak vI:247. Practical philosophy, ed. Gregor, Pp. 401-2. Also, cf. Reinhard Brandt,"}, {"category_id": 15, "poly": [204.0, 1519.0, 1044.0, 1521.0, 1044.0, 1547.0, 204.0, 1545.0], "score": 0.98, "text": "“Das Erlaubnisgesetz, oder: Vernunft und Geschichte in Kants Rechtslehre,”in Brandt"}, {"category_id": 15, "poly": [171.0, 1571.0, 722.0, 1575.0, 722.0, 1607.0, 171.0, 1603.0], "score": 0.97, "text": " 8. RL Ak vI:23o. Practical philosophy, ed. Gregor, p. 387."}, {"category_id": 15, "poly": [204.0, 1543.0, 872.0, 1547.0, 872.0, 1579.0, 204.0, 1575.0], "score": 0.98, "text": "(ed.), Rechtsphilosophie der Aufklirung (Berlin: De Gruyter, 1982), Pp."}, {"category_id": 15, "poly": [176.0, 585.0, 1039.0, 587.0, 1039.0, 619.0, 176.0, 617.0], "score": 0.99, "text": "Here abiding by the law is set aside in favor of preserving civil peace for"}, {"category_id": 15, "poly": [178.0, 624.0, 1041.0, 624.0, 1041.0, 656.0, 178.0, 656.0], "score": 1.0, "text": "the very reason of preserving it, because civil peace is the sole prerequis-"}, {"category_id": 15, "poly": [178.0, 662.0, 936.0, 662.0, 936.0, 688.0, 178.0, 688.0], "score": 0.98, "text": "ite for a state of law in which laws can be issued and enforced."}, {"category_id": 15, "poly": [214.0, 698.0, 1039.0, 698.0, 1039.0, 724.0, 214.0, 724.0], "score": 0.99, "text": "This problem, to which retributivism is exposed within the Kantian"}, {"category_id": 15, "poly": [178.0, 731.0, 1042.0, 731.0, 1042.0, 763.0, 178.0, 763.0], "score": 0.99, "text": "philosophy of right, is actually related, thirdly, to a fundamental"}, {"category_id": 15, "poly": [178.0, 771.0, 1039.0, 771.0, 1039.0, 797.0, 178.0, 797.0], "score": 0.99, "text": "problem: retributivism is not compatible with an important principle"}, {"category_id": 15, "poly": [176.0, 804.0, 1042.0, 804.0, 1042.0, 836.0, 176.0, 836.0], "score": 0.99, "text": "of the Kantian philosophy of right, that is, with the permissive law"}, {"category_id": 15, "poly": [178.0, 840.0, 1041.0, 840.0, 1041.0, 872.0, 178.0, 872.0], "score": 1.0, "text": "(see Sections 2.4 and 4.4). The permissive law allows an exception"}, {"category_id": 15, "poly": [174.0, 872.0, 1041.0, 876.0, 1041.0, 908.0, 174.0, 904.0], "score": 1.0, "text": "to be made to law's implementation, so long as this exception only"}, {"category_id": 15, "poly": [176.0, 911.0, 1041.0, 911.0, 1041.0, 943.0, 176.0, 943.0], "score": 0.99, "text": "concerns what has occurred up to then and not that which either is"}, {"category_id": 15, "poly": [178.0, 951.0, 1039.0, 951.0, 1039.0, 977.0, 178.0, 977.0], "score": 0.98, "text": "occurring in the present or will occur in the future. Such an exception"}, {"category_id": 15, "poly": [178.0, 982.0, 1041.0, 982.0, 1041.0, 1014.0, 178.0, 1014.0], "score": 0.98, "text": "should provide for the peaceful establishment of a state of law where"}, {"category_id": 15, "poly": [174.0, 1018.0, 1042.0, 1016.0, 1043.0, 1050.0, 174.0, 1052.0], "score": 0.99, "text": "the application of the law to the existing situation would lead to"}, {"category_id": 15, "poly": [174.0, 1054.0, 1039.0, 1052.0, 1039.0, 1086.0, 174.0, 1088.0], "score": 0.99, "text": "regression to the state of nature or into civil war. However, the imple-"}, {"category_id": 15, "poly": [176.0, 1091.0, 1042.0, 1091.0, 1042.0, 1123.0, 176.0, 1123.0], "score": 1.0, "text": "mentation of the law in the present and in the future is not allowed to"}, {"category_id": 15, "poly": [176.0, 1127.0, 1042.0, 1127.0, 1042.0, 1159.0, 176.0, 1159.0], "score": 0.98, "text": "be postponed ad calendas graecas,° but instead should occur in the"}, {"category_id": 15, "poly": [174.0, 1161.0, 1042.0, 1161.0, 1042.0, 1198.0, 174.0, 1198.0], "score": 0.99, "text": "most direct way possible.7 Now, Kant defines right as being the “sum"}, {"category_id": 15, "poly": [180.0, 1200.0, 1041.0, 1200.0, 1041.0, 1226.0, 180.0, 1226.0], "score": 0.96, "text": "of the conditions under which the choice of one can be united with"}, {"category_id": 15, "poly": [172.0, 1230.0, 1046.0, 1222.0, 1046.0, 1266.0, 173.0, 1273.0], "score": 0.98, "text": "the choice of another in accordance with a universal law of freedom,\"8"}, {"category_id": 15, "poly": [178.0, 1273.0, 1037.0, 1273.0, 1037.0, 1299.0, 178.0, 1299.0], "score": 0.97, "text": "by which the power of choice (Willkir) of all human beings - there-"}, {"category_id": 15, "poly": [174.0, 1305.0, 1041.0, 1307.0, 1041.0, 1341.0, 174.0, 1339.0], "score": 0.99, "text": "fore, also of the criminal - is meant. Thus, if there is in fact a way"}, {"category_id": 15, "poly": [176.0, 1341.0, 1041.0, 1341.0, 1041.0, 1372.0, 176.0, 1372.0], "score": 0.99, "text": "enabling one to reintegrate the criminal into society in the most direct"}, {"category_id": 15, "poly": [521.0, 96.0, 698.0, 96.0, 698.0, 122.0, 521.0, 122.0], "score": 1.0, "text": "CONCLUSION"}, {"category_id": 15, "poly": [47.0, 1718.0, 1140.0, 1718.0, 1140.0, 1742.0, 47.0, 1742.0], "score": 0.99, "text": "Downloaded from https://www.cambridge.org/core. Universiteit Leiden / LUMC, on 29 Nov 2019 at 23:02:12, subject to the Cambridge Core"}, {"category_id": 15, "poly": [47.0, 1740.0, 947.0, 1740.0, 947.0, 1764.0, 47.0, 1764.0], "score": 0.99, "text": "terms of use, available at https://www.cambridge.org/core/terms. https://doi.org/10.1017/CB09780511770425.012"}, {"category_id": 15, "poly": [994.0, 96.0, 1046.0, 96.0, 1046.0, 133.0, 994.0, 133.0], "score": 1.0, "text": "193"}], "judge": {"final_judge": true, "search_judge": true, "score_judge": true, "cannot_find": false, "search_list": [[40.12925720214844, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/S0021875817000378.pdf_1.jpg"], [44.1798095703125, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/9781316090930.077.pdf_10.jpg"], [45.294715881347656, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-16659265.pdf_116.jpg"], [47.02918243408203, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/2f84035610deb9378036cb7a5498b885486cf8e0acfde755081b3484bcff8eed.pdf_15.jpg"], [50.920448303222656, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/cfa6f24ed2cbc9340cf61712f14b4314.pdf_2.jpg"], [51.11970520019531, 0.8585572842998586, 0.8571428571428571, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/CBO9780511551246.006.pdf_7.jpg"], [51.694923400878906, 0.9999999999999999, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/cbo9780511760433.011.pdf_6.jpg"], [52.53438186645508, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/j.1933-1592.2007.00043.x.pdf_10.jpg"], [55.34433364868164, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/7c4e3e519f7e8481ec5cdb09dd1e35a1a79860ea1d440673c9aecb9c9057148a.pdf_17.jpg"], [60.43921661376953, 0.9999999999999999, 0.9999999999999999, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-16821367.pdf_72.jpg"]]}, "page_info": {"page_no": 6, "height": 1800, "width": 1200}}, {"layout_dets": [{"category_id": 2, "poly": [186.12176513671875, 1434.665283203125, 1055.1126708984375, 1434.665283203125, 1055.1126708984375, 1606.65869140625, 186.12176513671875, 1606.65869140625], "score": 0.9999961853027344}, {"category_id": 1, "poly": [186.0970001220703, 239.26547241210938, 1051.49169921875, 239.26547241210938, 1051.49169921875, 559.2838134765625, 186.0970001220703, 559.2838134765625], "score": 0.9999932646751404}, {"category_id": 1, "poly": [185.57730102539062, 560.2919311523438, 1053.283935546875, 560.2919311523438, 1053.283935546875, 1354.54833984375, 185.57730102539062, 1354.54833984375], "score": 0.9999884366989136}, {"category_id": 2, "poly": [529.962646484375, 96.66432189941406, 706.2738037109375, 96.66432189941406, 706.2738037109375, 117.434814453125, 529.962646484375, 117.434814453125], "score": 0.9999491572380066}, {"category_id": 1, "poly": [186.09828186035156, 167.3245391845703, 1051.122802734375, 167.3245391845703, 1051.122802734375, 237.27932739257812, 186.09828186035156, 237.27932739257812], "score": 0.9999098777770996}, {"category_id": 2, "poly": [188.15760803222656, 97.43172454833984, 232.75328063964844, 97.43172454833984, 232.75328063964844, 123.55609130859375, 188.15760803222656, 123.55609130859375], "score": 0.9998123049736023}, {"category_id": 2, "poly": [45.75640869140625, 1718.0703125, 1142.839111328125, 1718.0703125, 1142.839111328125, 1762.819580078125, 45.75640869140625, 1762.819580078125], "score": 0.9997363090515137}, {"category_id": 13, "poly": [619, 419, 639, 419, 639, 452, 619, 452], "score": 0.74, "latex": "\\S"}, {"category_id": 13, "poly": [1033, 352, 1052, 352, 1052, 374, 1033, 374], "score": 0.33, "latex": "a"}, {"category_id": 15, "poly": [189.0, 1436.0, 1052.0, 1436.0, 1052.0, 1468.0, 189.0, 1468.0], "score": 0.98, "text": " 9. Cf. Gustav Radbruch, Rechtsphilosophie, ed. Erik Wolf, seventh edition (Stuttgart:"}, {"category_id": 15, "poly": [218.0, 1461.0, 506.0, 1463.0, 506.0, 1494.0, 217.0, 1492.0], "score": 0.98, "text": "K. F. Koehler, 1970), p. 265."}, {"category_id": 15, "poly": [184.0, 1491.0, 398.0, 1491.0, 398.0, 1522.0, 184.0, 1522.0], "score": 0.98, "text": "10. Lev. 24:20 (KJV)."}, {"category_id": 15, "poly": [182.0, 1519.0, 1057.0, 1517.0, 1058.0, 1549.0, 182.0, 1551.0], "score": 0.98, "text": "11. Chapter 12, entitled “The purpose of punishment,\" in Cesare Beccaria, On crimes and"}, {"category_id": 15, "poly": [221.0, 1549.0, 1054.0, 1549.0, 1054.0, 1575.0, 221.0, 1575.0], "score": 0.98, "text": "punishments, in Beccaria, On crimes and punishments and other writings, ed. Richard"}, {"category_id": 15, "poly": [219.0, 1573.0, 1052.0, 1575.0, 1052.0, 1607.0, 219.0, 1605.0], "score": 0.99, "text": " Bellamy, trans. Richard Davies (Cambridge: Cambridge University Press, 1995), p. 31."}, {"category_id": 15, "poly": [218.0, 240.0, 1052.0, 240.0, 1052.0, 272.0, 218.0, 272.0], "score": 0.99, "text": "The categorical imperative of right consists not only in an ideal"}, {"category_id": 15, "poly": [186.0, 276.0, 1052.0, 276.0, 1052.0, 307.0, 186.0, 307.0], "score": 0.98, "text": "legal system, but also in the steps that are necessary for either the"}, {"category_id": 15, "poly": [186.0, 313.0, 1052.0, 313.0, 1052.0, 345.0, 186.0, 345.0], "score": 0.99, "text": "establishment or the reestablishment of this legal system. Writings"}, {"category_id": 15, "poly": [186.0, 382.0, 1054.0, 382.0, 1054.0, 420.0, 186.0, 420.0], "score": 0.99, "text": "cosmopolitan purpose belong to the latter dimension of the categorical"}, {"category_id": 15, "poly": [182.0, 454.0, 1052.0, 452.0, 1052.0, 489.0, 182.0, 491.0], "score": 1.0, "text": "editorial section of the Doctrine of right, which has to do primarily with"}, {"category_id": 15, "poly": [184.0, 489.0, 1052.0, 491.0, 1052.0, 525.0, 184.0, 523.0], "score": 1.0, "text": "the ideal legal system, and therefore with the first dimension, penal"}, {"category_id": 15, "poly": [186.0, 529.0, 819.0, 529.0, 819.0, 561.0, 186.0, 561.0], "score": 1.0, "text": "law can be categorized into the second dimension."}, {"category_id": 15, "poly": [186.0, 422.0, 618.0, 422.0, 618.0, 454.0, 186.0, 454.0], "score": 0.99, "text": "imperative of right. Even though"}, {"category_id": 15, "poly": [640.0, 422.0, 1052.0, 422.0, 1052.0, 454.0, 640.0, 454.0], "score": 0.97, "text": " 49E devoted to penal law is an"}, {"category_id": 15, "poly": [184.0, 347.0, 1032.0, 349.0, 1032.0, 381.0, 184.0, 379.0], "score": 0.98, "text": "such as Toward perpetual peace and Idea for a universal history with"}, {"category_id": 15, "poly": [218.0, 564.0, 1052.0, 564.0, 1052.0, 596.0, 218.0, 596.0], "score": 0.99, "text": "In this respect, Gustav Radbruch's dichotomy between right as a"}, {"category_id": 15, "poly": [186.0, 600.0, 1050.0, 600.0, 1050.0, 632.0, 186.0, 632.0], "score": 0.98, "text": "realm of justice in compensation (commutative justice) and an extra-"}, {"category_id": 15, "poly": [188.0, 634.0, 1048.0, 634.0, 1048.0, 666.0, 188.0, 666.0], "score": 0.99, "text": "legal realm of distributive justice and social utility is to be resolutely"}, {"category_id": 15, "poly": [184.0, 669.0, 1054.0, 667.0, 1054.0, 705.0, 184.0, 707.0], "score": 0.99, "text": "rejected.9 Penal law, which incontrovertibly constitutes an essential"}, {"category_id": 15, "poly": [188.0, 709.0, 1052.0, 709.0, 1052.0, 741.0, 188.0, 741.0], "score": 0.99, "text": "component of right, pertains neither to commutative justice nor to"}, {"category_id": 15, "poly": [184.0, 741.0, 1056.0, 741.0, 1056.0, 784.0, 184.0, 784.0], "score": 0.99, "text": "corrective justice. The former presupposes the agreement of all"}, {"category_id": 15, "poly": [186.0, 780.0, 1052.0, 780.0, 1052.0, 812.0, 186.0, 812.0], "score": 0.99, "text": "parties over the conditions and the items of the trade. Be it only for"}, {"category_id": 15, "poly": [184.0, 814.0, 1052.0, 816.0, 1052.0, 848.0, 184.0, 846.0], "score": 0.99, "text": "this reason, punishment cannot rest on commutative justice. Not even"}, {"category_id": 15, "poly": [182.0, 847.0, 1052.0, 849.0, 1052.0, 887.0, 182.0, 885.0], "score": 0.99, "text": "retributivism can be described as a trade. “Eye for eye, tooth for"}, {"category_id": 15, "poly": [186.0, 885.0, 1050.0, 889.0, 1050.0, 921.0, 186.0, 917.0], "score": 0.98, "text": "tooth\"io or “the retribution of what one merits\" does not mean"}, {"category_id": 15, "poly": [188.0, 924.0, 1050.0, 924.0, 1050.0, 956.0, 188.0, 956.0], "score": 0.99, "text": "trading eyes or teeth, or trading the deserts of a human being for"}, {"category_id": 15, "poly": [184.0, 958.0, 1052.0, 960.0, 1052.0, 992.0, 184.0, 990.0], "score": 0.99, "text": "the infliction of evils by another human being. Now, the return to the"}, {"category_id": 15, "poly": [188.0, 994.0, 1052.0, 994.0, 1052.0, 1026.0, 188.0, 1026.0], "score": 0.99, "text": "status quo ante pertains to corrective justice. However, how can the status"}, {"category_id": 15, "poly": [186.0, 1033.0, 1050.0, 1029.0, 1050.0, 1061.0, 186.0, 1065.0], "score": 0.98, "text": "quo ante of a murder victim be reestablished even to a small extent?"}, {"category_id": 15, "poly": [186.0, 1069.0, 1050.0, 1069.0, 1050.0, 1101.0, 186.0, 1101.0], "score": 0.98, "text": "In this respect, Cesare Beccaria's rhetorical question is irrefutable:"}, {"category_id": 15, "poly": [186.0, 1102.0, 1052.0, 1102.0, 1052.0, 1140.0, 186.0, 1140.0], "score": 1.0, "text": "\"Can the wailings of a wretch, perhaps, undo what has been done"}, {"category_id": 15, "poly": [182.0, 1134.0, 1052.0, 1136.0, 1052.0, 1174.0, 182.0, 1172.0], "score": 0.98, "text": "and turn back the clock?11 The punishment, rather, has to do with"}, {"category_id": 15, "poly": [189.0, 1179.0, 1048.0, 1179.0, 1048.0, 1206.0, 189.0, 1206.0], "score": 0.98, "text": "distributive justice, because it assures every human being of integration"}, {"category_id": 15, "poly": [186.0, 1213.0, 1048.0, 1213.0, 1048.0, 1245.0, 186.0, 1245.0], "score": 0.99, "text": "or of reintegration into the commonwealth - regardless of his or her"}, {"category_id": 15, "poly": [184.0, 1247.0, 1048.0, 1251.0, 1048.0, 1283.0, 184.0, 1279.0], "score": 0.99, "text": "achievements or actions up to then - for the simple reason that every"}, {"category_id": 15, "poly": [184.0, 1282.0, 1052.0, 1282.0, 1052.0, 1320.0, 184.0, 1320.0], "score": 0.99, "text": "human being as a being capable of reason has an innate, unforfeitable"}, {"category_id": 15, "poly": [186.0, 1320.0, 352.0, 1320.0, 352.0, 1352.0, 186.0, 1352.0], "score": 0.96, "text": "right to such."}, {"category_id": 15, "poly": [531.0, 96.0, 705.0, 96.0, 705.0, 122.0, 531.0, 122.0], "score": 1.0, "text": "CONCLUSION"}, {"category_id": 15, "poly": [188.0, 172.0, 1050.0, 172.0, 1050.0, 199.0, 188.0, 199.0], "score": 0.99, "text": "way, then this way is commanded. If this way actually exists at all, then"}, {"category_id": 15, "poly": [186.0, 206.0, 771.0, 206.0, 771.0, 238.0, 186.0, 238.0], "score": 1.0, "text": "it is, per definitionem, rehabilitative punishment."}, {"category_id": 15, "poly": [186.0, 94.0, 236.0, 94.0, 236.0, 133.0, 186.0, 133.0], "score": 1.0, "text": "194"}, {"category_id": 15, "poly": [47.0, 1718.0, 1140.0, 1718.0, 1140.0, 1742.0, 47.0, 1742.0], "score": 0.99, "text": "Downloaded from https://www.cambridge.org/core. Universiteit Leiden / LUMC, on 29 Nov 2019 at 23:02:12, subject to the Cambridge Core"}, {"category_id": 15, "poly": [47.0, 1740.0, 947.0, 1740.0, 947.0, 1764.0, 47.0, 1764.0], "score": 0.99, "text": "terms of use, available at https://www.cambridge.org/core/terms. https://doi.org/10.1017/CB09780511770425.012"}], "judge": {"final_judge": true, "search_judge": true, "score_judge": true, "cannot_find": false, "search_list": [[33.46018600463867, 0.9999999999999999, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/cbo9780511760433.011.pdf_6.jpg"], [46.74518585205078, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/9781316090930.077.pdf_10.jpg"], [49.379337310791016, 0.8585572842998586, 0.8571428571428571, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/CBO9780511551246.006.pdf_7.jpg"], [52.24210739135742, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/9781316691311.003.pdf_24.jpg"], [53.57355499267578, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/dianzishu_zhongwenzaixian-o.O-61022629.pdf_160.jpg"], [55.98894500732422, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/S0021875817000378.pdf_1.jpg"], [56.5302848815918, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-21539592.pdf_279.jpg"], [60.459964752197266, 0.7508250825082508, 0.8333333333333333, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-17460514.pdf_136.jpg"], [62.29426193237305, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-19315297.pdf_6.jpg"], [65.522705078125, 0.9999999999999999, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/df156e8465ff477c90a1393a0ab5947e448ed696ac0d3ea982480f5c237a29e1.pdf_8.jpg"]]}, "page_info": {"page_no": 7, "height": 1800, "width": 1200}}, {"layout_dets": [{"category_id": 2, "poly": [178.1744384765625, 1379.4212646484375, 1044.2001953125, 1379.4212646484375, 1044.2001953125, 1602.649658203125, 178.1744384765625, 1602.649658203125], "score": 0.9999977350234985}, {"category_id": 1, "poly": [176.4250030517578, 849.6359252929688, 1042.470947265625, 849.6359252929688, 1042.470947265625, 1206.6923828125, 176.4250030517578, 1206.6923828125], "score": 0.9999918937683105}, {"category_id": 1, "poly": [176.7879180908203, 165.97573852539062, 1044.6990966796875, 165.97573852539062, 1044.6990966796875, 845.2696533203125, 176.7879180908203, 845.2696533203125], "score": 0.9999825358390808}, {"category_id": 2, "poly": [522.218994140625, 97.64007568359375, 697.3997802734375, 97.64007568359375, 697.3997802734375, 115.09343719482422, 522.218994140625, 115.09343719482422], "score": 0.9997891187667847}, {"category_id": 1, "poly": [175.1726531982422, 1210.41357421875, 1044.1864013671875, 1210.41357421875, 1044.1864013671875, 1317.754150390625, 175.1726531982422, 1317.754150390625], "score": 0.9997514486312866}, {"category_id": 2, "poly": [45.92216491699219, 1717.8394775390625, 1142.5506591796875, 1717.8394775390625, 1142.5506591796875, 1762.9683837890625, 45.92216491699219, 1762.9683837890625], "score": 0.9996484518051147}, {"category_id": 2, "poly": [998.3270874023438, 98.5640869140625, 1040.5067138671875, 98.5640869140625, 1040.5067138671875, 120.62263488769531, 998.3270874023438, 120.62263488769531], "score": 0.9967317581176758}, {"category_id": 13, "poly": [333, 1384, 350, 1384, 350, 1408, 333, 1408], "score": 0.37, "latex": "5"}, {"category_id": 13, "poly": [536, 1522, 610, 1522, 610, 1547, 536, 1547], "score": 0.27, "latex": "^{159-72}"}, {"category_id": 15, "poly": [219.0, 1410.0, 801.0, 1410.0, 801.0, 1436.0, 219.0, 1436.0], "score": 0.98, "text": "(University Park: Pennsylvania State University Press, 2o02)."}, {"category_id": 15, "poly": [176.0, 1436.0, 1046.0, 1436.0, 1046.0, 1468.0, 176.0, 1468.0], "score": 1.0, "text": "13. This very arrangement of priority holds equally, by the way, for other realms in the"}, {"category_id": 15, "poly": [219.0, 1464.0, 1042.0, 1464.0, 1042.0, 1491.0, 219.0, 1491.0], "score": 0.99, "text": "Kantian doctrine of right, for example property: cf. Jean-Christophe Merle (ed.),"}, {"category_id": 15, "poly": [221.0, 1492.0, 1046.0, 1492.0, 1046.0, 1519.0, 221.0, 1519.0], "score": 0.96, "text": "“Eigentumsrecht,” in Merle (ed.), Johann Gottlieb Fichte: Grundlage des Naturrechts"}, {"category_id": 15, "poly": [218.0, 1549.0, 1044.0, 1549.0, 1044.0, 1575.0, 218.0, 1575.0], "score": 0.98, "text": "Justice et progres: contribution a une doctrine du droit économique et social (Paris:Presses"}, {"category_id": 15, "poly": [212.0, 1569.0, 535.0, 1575.0, 534.0, 1607.0, 212.0, 1601.0], "score": 0.99, "text": "Universitaires de France, 1997)."}, {"category_id": 15, "poly": [176.0, 1382.0, 332.0, 1382.0, 332.0, 1408.0, 176.0, 1408.0], "score": 0.98, "text": "12.Cf. chapter"}, {"category_id": 15, "poly": [351.0, 1382.0, 1044.0, 1382.0, 1044.0, 1408.0, 351.0, 1408.0], "score": 0.99, "text": "in Otfried Hoffe, Categorical principles of law: a counterpoint to modernity"}, {"category_id": 15, "poly": [218.0, 1517.0, 535.0, 1519.0, 535.0, 1551.0, 217.0, 1549.0], "score": 0.97, "text": "(Berlin: De Gruyter, 2001), Pp."}, {"category_id": 15, "poly": [611.0, 1517.0, 1044.0, 1519.0, 1044.0, 1551.0, 611.0, 1549.0], "score": 0.99, "text": "; and Section 2.3 in Jean-Christophe Merle,"}, {"category_id": 15, "poly": [208.0, 849.0, 1043.0, 851.0, 1042.0, 883.0, 208.0, 881.0], "score": 0.99, "text": "We therefore find a twofold hierarchization of moral goods that"}, {"category_id": 15, "poly": [176.0, 887.0, 1041.0, 885.0, 1041.0, 917.0, 176.0, 919.0], "score": 0.99, "text": "can collide with one another. First, the commonwealth would receive"}, {"category_id": 15, "poly": [176.0, 924.0, 1041.0, 921.0, 1041.0, 952.0, 176.0, 956.0], "score": 0.98, "text": "precedence over individual freedom in the case of a collision, which"}, {"category_id": 15, "poly": [174.0, 960.0, 1041.0, 960.0, 1041.0, 992.0, 174.0, 992.0], "score": 0.97, "text": "is why it is allowed provisionally either to limit or to suspend the"}, {"category_id": 15, "poly": [176.0, 998.0, 1041.0, 998.0, 1041.0, 1024.0, 176.0, 1024.0], "score": 0.99, "text": "freedom of the criminal. Secondly, in the case of a collision, individual"}, {"category_id": 15, "poly": [174.0, 1029.0, 1043.0, 1031.0, 1042.0, 1063.0, 174.0, 1061.0], "score": 0.99, "text": "freedom receives precedence over the consequences, which the"}, {"category_id": 15, "poly": [176.0, 1069.0, 1041.0, 1069.0, 1041.0, 1101.0, 176.0, 1101.0], "score": 0.99, "text": "actions of individuals should otherwise imply; this is why crime should"}, {"category_id": 15, "poly": [173.0, 1099.0, 1041.0, 1103.0, 1041.0, 1140.0, 172.0, 1136.0], "score": 0.99, "text": "be forgiven by society - with consideration for the first priority, that is,"}, {"category_id": 15, "poly": [174.0, 1140.0, 1046.0, 1140.0, 1046.0, 1172.0, 174.0, 1172.0], "score": 0.99, "text": "with consideration for the security of the commonwealth - in the most"}, {"category_id": 15, "poly": [176.0, 1176.0, 457.0, 1172.0, 458.0, 1206.0, 177.0, 1210.0], "score": 1.0, "text": "directmannerpossible.3"}, {"category_id": 15, "poly": [210.0, 171.0, 1037.0, 171.0, 1037.0, 202.0, 210.0, 202.0], "score": 0.99, "text": "Fourthly, the categorical legal imperative of integration or reinte"}, {"category_id": 15, "poly": [172.0, 203.0, 1042.0, 201.0, 1043.0, 240.0, 173.0, 242.0], "score": 0.98, "text": "gration into the commonwealth likewise derives a deeper grounding"}, {"category_id": 15, "poly": [176.0, 242.0, 1035.0, 242.0, 1035.0, 268.0, 176.0, 268.0], "score": 0.98, "text": "in the Kantian foundation of morality, namely in the empirical cir"}, {"category_id": 15, "poly": [176.0, 278.0, 1044.0, 278.0, 1044.0, 309.0, 176.0, 309.0], "score": 0.99, "text": "cumstances of the exercise of autonomy in a limited being capable of"}, {"category_id": 15, "poly": [174.0, 313.0, 1042.0, 313.0, 1042.0, 345.0, 174.0, 345.0], "score": 0.99, "text": "reason who can also act against his or her duty, irrationally. On the"}, {"category_id": 15, "poly": [176.0, 349.0, 1041.0, 349.0, 1041.0, 381.0, 176.0, 381.0], "score": 0.99, "text": "one hand, a human being should bear the responsibility for his or her"}, {"category_id": 15, "poly": [176.0, 384.0, 1039.0, 384.0, 1039.0, 416.0, 176.0, 416.0], "score": 0.99, "text": "actions because he or she has freedom of action. On the other hand,"}, {"category_id": 15, "poly": [178.0, 424.0, 1041.0, 424.0, 1041.0, 450.0, 178.0, 450.0], "score": 0.98, "text": "the consequences of actions carried out in the past should not lead to"}, {"category_id": 15, "poly": [176.0, 458.0, 1039.0, 458.0, 1039.0, 489.0, 176.0, 489.0], "score": 0.99, "text": "the consequence that a person can no longer act freely in the future."}, {"category_id": 15, "poly": [174.0, 489.0, 1043.0, 491.0, 1042.0, 525.0, 174.0, 523.0], "score": 0.99, "text": "These two dimensions do not limit one another. The consequences of"}, {"category_id": 15, "poly": [178.0, 532.0, 1041.0, 532.0, 1041.0, 559.0, 178.0, 559.0], "score": 0.97, "text": "the actions hitherto done are limited by the commandment that"}, {"category_id": 15, "poly": [172.0, 563.0, 1042.0, 561.0, 1043.0, 598.0, 173.0, 600.0], "score": 1.0, "text": "requires treating every human being as a being capable of reason with"}, {"category_id": 15, "poly": [172.0, 600.0, 1044.0, 598.0, 1044.0, 630.0, 173.0, 632.0], "score": 0.99, "text": "an inalienable freedom of action. Now, this inalienable freedom of"}, {"category_id": 15, "poly": [171.0, 632.0, 1046.0, 634.0, 1046.0, 671.0, 171.0, 669.0], "score": 0.97, "text": " action is not limited by the consequences of past actions. Rather, it is"}, {"category_id": 15, "poly": [178.0, 669.0, 1039.0, 669.0, 1039.0, 701.0, 178.0, 701.0], "score": 0.99, "text": "limited by the same inalienable freedom of action of the other human"}, {"category_id": 15, "poly": [174.0, 705.0, 1039.0, 707.0, 1039.0, 741.0, 174.0, 739.0], "score": 0.99, "text": "beings. It is only for this reason that the Kantian concept of right is an"}, {"category_id": 15, "poly": [174.0, 742.0, 1042.0, 742.0, 1042.0, 780.0, 174.0, 780.0], "score": 0.99, "text": "object of the categorical imperative, which we may also term the"}, {"category_id": 15, "poly": [176.0, 780.0, 1044.0, 778.0, 1044.0, 812.0, 176.0, 814.0], "score": 0.97, "text": "\"categorical imperative of right,” to borrow Otfried Hoffe's"}, {"category_id": 15, "poly": [174.0, 820.0, 346.0, 811.0, 347.0, 843.0, 175.0, 852.0], "score": 0.99, "text": "expression.12"}, {"category_id": 15, "poly": [521.0, 96.0, 698.0, 96.0, 698.0, 122.0, 521.0, 122.0], "score": 1.0, "text": "CONCLUSION"}, {"category_id": 15, "poly": [208.0, 1207.0, 1041.0, 1211.0, 1041.0, 1247.0, 208.0, 1243.0], "score": 0.99, "text": "At the center of the Kantian idea of autonomy, under the guidance"}, {"category_id": 15, "poly": [176.0, 1249.0, 1041.0, 1249.0, 1041.0, 1281.0, 176.0, 1281.0], "score": 0.99, "text": "of which we always ought to act and to which, therefore, the legal"}, {"category_id": 15, "poly": [174.0, 1283.0, 1044.0, 1281.0, 1044.0, 1318.0, 174.0, 1320.0], "score": 0.97, "text": "system is subject, is the forward-looking project of the full"}, {"category_id": 15, "poly": [47.0, 1718.0, 1140.0, 1718.0, 1140.0, 1742.0, 47.0, 1742.0], "score": 0.99, "text": "Downloaded from https://www.cambridge.org/core. Universiteit Leiden / LUMC, on 29 Nov 2019 at 23:02:12, subject to the Cambridge Core"}, {"category_id": 15, "poly": [47.0, 1740.0, 947.0, 1740.0, 947.0, 1764.0, 47.0, 1764.0], "score": 0.99, "text": "terms of use, available at https://www.cambridge.org/core/terms. https://doi.org/10.1017/CB09780511770425.012"}, {"category_id": 15, "poly": [994.0, 96.0, 1046.0, 96.0, 1046.0, 133.0, 994.0, 133.0], "score": 1.0, "text": "195"}], "judge": {"final_judge": true, "search_judge": true, "score_judge": true, "cannot_find": false, "search_list": [[33.45214080810547, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/S0021875817000378.pdf_1.jpg"], [35.846343994140625, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/CBO9781139088398.007.pdf_29.jpg"], [45.88932418823242, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-16659265.pdf_116.jpg"], [52.46403503417969, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/s0308-521x%2898%2900056-0.pdf_3.jpg"], [53.79743957519531, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/9b04f5410f803df1f5f93aa3778059efe90db326c19f5d7ba85414c96739b3bd.pdf_5.jpg"], [56.742919921875, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-17538478.pdf_170.jpg"], [57.389892578125, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/cd.56.pdf_7.jpg"], [58.915245056152344, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/3055e0d8130c7a197bc6e020afe9bea1edef31f33b720cc326dd404d8e3f82d5.pdf_5.jpg"], [60.87705612182617, 0.8585572842998586, 0.8571428571428571, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/CBO9780511551246.006.pdf_7.jpg"], [62.43968963623047, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/enbook-zlib-o.O-16579787.pdf_143.jpg"]]}, "page_info": {"page_no": 8, "height": 1800, "width": 1200}}, {"layout_dets": [{"category_id": 1, "poly": [185.55514526367188, 165.05636596679688, 1051.962158203125, 165.05636596679688, 1051.962158203125, 416.17791748046875, 185.55514526367188, 416.17791748046875], "score": 0.9999955892562866}, {"category_id": 1, "poly": [187.62872314453125, 471.3214416503906, 1053.895263671875, 471.3214416503906, 1053.895263671875, 669.642822265625, 187.62872314453125, 669.642822265625], "score": 0.9999722838401794}, {"category_id": 2, "poly": [529.6675415039062, 95.03907775878906, 706.549072265625, 95.03907775878906, 706.549072265625, 118.32815551757812, 529.6675415039062, 118.32815551757812], "score": 0.9998582601547241}, {"category_id": 2, "poly": [46.07423400878906, 1718.798583984375, 1141.189208984375, 1718.798583984375, 1141.189208984375, 1761.908935546875, 46.07423400878906, 1761.908935546875], "score": 0.9997307658195496}, {"category_id": 2, "poly": [189.4586181640625, 93.21783447265625, 232.76022338867188, 93.21783447265625, 232.76022338867188, 121.17974853515625, 189.4586181640625, 121.17974853515625], "score": 0.9981511831283569}, {"category_id": 15, "poly": [189.0, 169.0, 1050.0, 169.0, 1050.0, 201.0, 189.0, 201.0], "score": 1.0, "text": "development of the human being as a being capable of reason, and"}, {"category_id": 15, "poly": [184.0, 203.0, 1052.0, 201.0, 1052.0, 238.0, 184.0, 240.0], "score": 0.99, "text": "not the painfully exact accounting of the misdeeds of humanity in the"}, {"category_id": 15, "poly": [184.0, 242.0, 1052.0, 238.0, 1052.0, 270.0, 184.0, 274.0], "score": 0.98, "text": "epoch of the - as Kant terms it - \"baby walker.\"14 As Albert Camus"}, {"category_id": 15, "poly": [182.0, 274.0, 1052.0, 272.0, 1052.0, 309.0, 182.0, 311.0], "score": 0.99, "text": "observed in the debate over the death penalty, one could equally"}, {"category_id": 15, "poly": [184.0, 313.0, 1052.0, 313.0, 1052.0, 345.0, 184.0, 345.0], "score": 0.99, "text": "say of retributivists that: “we all know today's executioners are human-"}, {"category_id": 15, "poly": [180.0, 343.0, 1052.0, 347.0, 1052.0, 384.0, 180.0, 381.0], "score": 0.98, "text": "ists.\"15 It is just that we do not hold the same concept of humanity"}, {"category_id": 15, "poly": [186.0, 388.0, 319.0, 388.0, 319.0, 414.0, 186.0, 414.0], "score": 1.0, "text": "astheydo."}, {"category_id": 15, "poly": [188.0, 476.0, 1054.0, 476.0, 1054.0, 502.0, 188.0, 502.0], "score": 0.97, "text": "14. The epoch of the Gangelwagen, a device used by children learning to walk. Was"}, {"category_id": 15, "poly": [225.0, 501.0, 1048.0, 501.0, 1048.0, 532.0, 225.0, 532.0], "score": 0.96, "text": "ist Aufklarung? Ak vil1:35. Practical philosophy, ed. Gregor, p. 17: “walking wagon.'"}, {"category_id": 15, "poly": [223.0, 523.0, 1056.0, 525.0, 1056.0, 563.0, 223.0, 561.0], "score": 0.98, "text": "Also found in KrV B 174. Critique of pure reason, ed. Guyer and Wood, p. 269:"}, {"category_id": 15, "poly": [227.0, 557.0, 392.0, 559.0, 392.0, 585.0, 227.0, 583.0], "score": 0.97, "text": "\"leading-strings.\""}, {"category_id": 15, "poly": [186.0, 583.0, 1054.0, 583.0, 1054.0, 615.0, 186.0, 615.0], "score": 0.99, "text": "15. Albert Camus, Reflections on the guillotine: an essay on capital punishment by the 1957"}, {"category_id": 15, "poly": [227.0, 613.0, 1052.0, 613.0, 1052.0, 639.0, 227.0, 639.0], "score": 0.97, "text": "Nobel Prize winner, trans. Richard Howard (Michigan City, Ind.: Fridtjof-Karla"}, {"category_id": 15, "poly": [224.0, 639.0, 486.0, 645.0, 485.0, 671.0, 223.0, 665.0], "score": 0.98, "text": "Publications,1959),p.50."}, {"category_id": 15, "poly": [531.0, 96.0, 705.0, 96.0, 705.0, 122.0, 531.0, 122.0], "score": 1.0, "text": "CONCLUSION"}, {"category_id": 15, "poly": [47.0, 1718.0, 1140.0, 1718.0, 1140.0, 1742.0, 47.0, 1742.0], "score": 0.99, "text": "Downloaded from https://www.cambridge.org/core. Universiteit Leiden / LUMC, on 29 Nov 2019 at 23:02:12, subject to the Cambridge Core"}, {"category_id": 15, "poly": [47.0, 1740.0, 947.0, 1740.0, 947.0, 1764.0, 47.0, 1764.0], "score": 0.99, "text": "terms of use, available at https://www.cambridge.org/core/terms. https://doi.org/10.1017/CB09780511770425.012"}, {"category_id": 15, "poly": [186.0, 90.0, 238.0, 90.0, 238.0, 131.0, 186.0, 131.0], "score": 1.0, "text": "196"}], "judge": {"final_judge": false, "search_judge": false, "score_judge": true, "cannot_find": false, "search_list": [[77.21629333496094, 0.33333333333333326, 0.3333333333333333, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/llm-raw-scihub-o.O-chin.201025015.pdf_1.jpg"], [77.38577270507812, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/dianzishu_zhongwenzaixian-o.O-63684477.pdf_135.jpg"], [79.51431274414062, 0.6, 0.6, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/dianzishu_zhongwenzaixian-o.O-61565574.pdf_160.jpg"], [81.59078216552734, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_yanbao_ppt_merge_coco/val/f46a4b51b0a0355bc4b1b70e17ff98676c2ccce736c95d59003e770f5f31fdfc.pdf_1.jpg"], [82.08332824707031, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/9783110260007.843.pdf_7.jpg"], [88.55247497558594, 0.9999999999999999, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_scihub_coco/val/el%3A20045932.pdf_1.jpg"], [88.88130187988281, 0.5841584158415841, 0.75, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_docstructbench/val/dianzishu_zhongwenzaixian-o.O-61560140.pdf_58.jpg"], [89.059814453125, 0.9381188118811882, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/jiaocai_en_851.jpg"], [90.42997741699219, 1.0, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_needrop_coco/val/jiaocai_needrop_en_3222.jpg"], [99.1190414428711, 0.9834983498349833, 1.0, "/mnt/hwfile/opendatalab/ouyanglinke/PDF_Formula/layout_jiaocai_coco/val/2017_Applied(Overall).pdf_0.jpg"]]}, "page_info": {"page_no": 9, "height": 1800, "width": 1200}}]} diff --git a/tests/test_cli/pdf_dev/pdf/test_rearch_report.pdf b/tests/test_cli/pdf_dev/pdf/test_rearch_report.pdf deleted file mode 100644 index 11b33815..00000000 Binary files a/tests/test_cli/pdf_dev/pdf/test_rearch_report.pdf and /dev/null differ diff --git a/tests/test_cli/pdf_dev/ppt/small.pptx b/tests/test_cli/pdf_dev/ppt/small.pptx deleted file mode 100644 index 4e31bef6..00000000 Binary files a/tests/test_cli/pdf_dev/ppt/small.pptx and /dev/null differ diff --git a/tests/test_cli/pdf_dev/result.json b/tests/test_cli/pdf_dev/result.json deleted file mode 100644 index 86b06043..00000000 --- a/tests/test_cli/pdf_dev/result.json +++ /dev/null @@ -1 +0,0 @@ -{"average_sim_score":0.6505598645664856, "average_edit_distance":0.2514908429188901, "average_bleu_score": 0.5808819533975296} \ No newline at end of file diff --git a/tests/test_cli/pdf_dev/test_model.json b/tests/test_cli/pdf_dev/test_model.json deleted file mode 100644 index 0d1faaff..00000000 --- a/tests/test_cli/pdf_dev/test_model.json +++ /dev/null @@ -1,1472 +0,0 @@ -[ - { - "layout_dets": [ - { - "category_id": 1, - "poly": [ - 578.2055053710938, - 672.8831787109375, - 1579.973388671875, - 672.8831787109375, - 1579.973388671875, - 1034.681640625, - 578.2055053710938, - 1034.681640625 - ], - "score": 0.9999963045120239 - }, - { - "category_id": 1, - "poly": [ - 583.6041259765625, - 1067.1112060546875, - 1579.822265625, - 1067.1112060546875, - 1579.822265625, - 1537.1324462890625, - 583.6041259765625, - 1537.1324462890625 - ], - "score": 0.9999961853027344 - }, - { - "category_id": 1, - "poly": [ - 585.4341430664062, - 1568.220703125, - 1578.5487060546875, - 1568.220703125, - 1578.5487060546875, - 1931.516845703125, - 585.4341430664062, - 1931.516845703125 - ], - "score": 0.9999949336051941 - }, - { - "category_id": 1, - "poly": [ - 578.491455078125, - 532.0020141601562, - 1577.96337890625, - 532.0020141601562, - 1577.96337890625, - 641.0128784179688, - 578.491455078125, - 641.0128784179688 - ], - "score": 0.999992847442627 - }, - { - "category_id": 1, - "poly": [ - 66.43791961669922, - 1776.6951904296875, - 530.4810180664062, - 1776.6951904296875, - 530.4810180664062, - 1883.127685546875, - 66.43791961669922, - 1883.127685546875 - ], - "score": 0.9999925494194031 - }, - { - "category_id": 3, - "poly": [ - 70.23656463623047, - 818.9393920898438, - 517.8253784179688, - 818.9393920898438, - 517.8253784179688, - 1076.5823974609375, - 70.23656463623047, - 1076.5823974609375 - ], - "score": 0.9999912977218628 - }, - { - "category_id": 1, - "poly": [ - 64.99957275390625, - 651.9596557617188, - 436.5134582519531, - 651.9596557617188, - 436.5134582519531, - 723.5758056640625, - 64.99957275390625, - 723.5758056640625 - ], - "score": 0.9999804496765137 - }, - { - "category_id": 0, - "poly": [ - 556.2775268554688, - 270.2123107910156, - 1577.8211669921875, - 270.2123107910156, - 1577.8211669921875, - 408.9685974121094, - 556.2775268554688, - 408.9685974121094 - ], - "score": 0.9999696016311646 - }, - { - "category_id": 1, - "poly": [ - 67.8562240600586, - 1342.2239990234375, - 530.5654296875, - 1342.2239990234375, - 530.5654296875, - 1447.843017578125, - 67.8562240600586, - 1447.843017578125 - ], - "score": 0.9999648928642273 - }, - { - "category_id": 1, - "poly": [ - 65.74958801269531, - 1631.3671875, - 530.32861328125, - 1631.3671875, - 530.32861328125, - 1772.413818359375, - 65.74958801269531, - 1772.413818359375 - ], - "score": 0.9999628067016602 - }, - { - "category_id": 1, - "poly": [ - 588.5570068359375, - 2068.54931640625, - 1525.3253173828125, - 2068.54931640625, - 1525.3253173828125, - 2103.89013671875, - 588.5570068359375, - 2103.89013671875 - ], - "score": 0.9999607801437378 - }, - { - "category_id": 1, - "poly": [ - 586.5548706054688, - 1963.105712890625, - 1556.578125, - 1963.105712890625, - 1556.578125, - 2034.8116455078125, - 586.5548706054688, - 2034.8116455078125 - ], - "score": 0.9999469518661499 - }, - { - "category_id": 5, - "poly": [ - 59.96487045288086, - 1110.6282958984375, - 529.9209594726562, - 1110.6282958984375, - 529.9209594726562, - 1225.2921142578125, - 59.96487045288086, - 1225.2921142578125 - ], - "score": 0.999945878982544 - }, - { - "category_id": 2, - "poly": [ - 70.25292205810547, - 103.42201232910156, - 420.4892578125, - 103.42201232910156, - 420.4892578125, - 223.39370727539062, - 70.25292205810547, - 223.39370727539062 - ], - "score": 0.9999405145645142 - }, - { - "category_id": 2, - "poly": [ - 1081.0203857421875, - 2244.87890625, - 1554.669189453125, - 2244.87890625, - 1554.669189453125, - 2275.28662109375, - 1081.0203857421875, - 2275.28662109375 - ], - "score": 0.9999217987060547 - }, - { - "category_id": 1, - "poly": [ - 68.85404968261719, - 345.9093017578125, - 307.9080810546875, - 345.9093017578125, - 307.9080810546875, - 409.0098876953125, - 68.85404968261719, - 409.0098876953125 - ], - "score": 0.9999183416366577 - }, - { - "category_id": 0, - "poly": [ - 65.58759307861328, - 1295.9366455078125, - 180.4149932861328, - 1295.9366455078125, - 180.4149932861328, - 1328.867919921875, - 65.58759307861328, - 1328.867919921875 - ], - "score": 0.9998926520347595 - }, - { - "category_id": 2, - "poly": [ - 1245.0789794921875, - 108.83513641357422, - 1576.3131103515625, - 108.83513641357422, - 1576.3131103515625, - 219.29042053222656, - 1245.0789794921875, - 219.29042053222656 - ], - "score": 0.9995975494384766 - }, - { - "category_id": 1, - "poly": [ - 65.75041961669922, - 483.5210266113281, - 428.6028137207031, - 483.5210266113281, - 428.6028137207031, - 586.8894653320312, - 65.75041961669922, - 586.8894653320312 - ], - "score": 0.9993270635604858 - }, - { - "category_id": 0, - "poly": [ - 65.02926635742188, - 445.02288818359375, - 208.3317108154297, - 445.02288818359375, - 208.3317108154297, - 476.65252685546875, - 65.02926635742188, - 476.65252685546875 - ], - "score": 0.9992279410362244 - }, - { - "category_id": 0, - "poly": [ - 556.96630859375, - 453.08447265625, - 673.0485229492188, - 453.08447265625, - 673.0485229492188, - 490.60455322265625, - 556.96630859375, - 490.60455322265625 - ], - "score": 0.9949817657470703 - }, - { - "category_id": 1, - "poly": [ - 66.26518249511719, - 1524.234130859375, - 530.2540283203125, - 1524.234130859375, - 530.2540283203125, - 1627.5291748046875, - 66.26518249511719, - 1627.5291748046875 - ], - "score": 0.9919581413269043 - }, - { - "category_id": 7, - "poly": [ - 62.5564079284668, - 1227.41943359375, - 380.10693359375, - 1227.41943359375, - 380.10693359375, - 1252.8614501953125, - 62.5564079284668, - 1252.8614501953125 - ], - "score": 0.9918426275253296 - }, - { - "category_id": 1, - "poly": [ - 66.80464935302734, - 1451.4775390625, - 527.3795166015625, - 1451.4775390625, - 527.3795166015625, - 1519.5836181640625, - 66.80464935302734, - 1519.5836181640625 - ], - "score": 0.9883899688720703 - }, - { - "category_id": 0, - "poly": [ - 65.36080932617188, - 605.3754272460938, - 181.24375915527344, - 605.3754272460938, - 181.24375915527344, - 637.0076904296875, - 65.36080932617188, - 637.0076904296875 - ], - "score": 0.9870840311050415 - }, - { - "category_id": 0, - "poly": [ - 178.82904052734375, - 264.6627197265625, - 396.52825927734375, - 264.6627197265625, - 396.52825927734375, - 315.41900634765625, - 178.82904052734375, - 315.41900634765625 - ], - "score": 0.9779323935508728 - }, - { - "category_id": 4, - "poly": [ - 66.15127563476562, - 767.24658203125, - 181.25694274902344, - 767.24658203125, - 181.25694274902344, - 799.7832641601562, - 66.15127563476562, - 799.7832641601562 - ], - "score": 0.8932801485061646 - }, - { - "category_id": 13, - "poly": [ - 590, - 747, - 688, - 747, - 688, - 778, - 590, - 778 - ], - "score": 0.91, - "latex": "+24.4\\%" - }, - { - "category_id": 13, - "poly": [ - 1433, - 855, - 1492, - 855, - 1492, - 886, - 1433, - 886 - ], - "score": 0.86, - "latex": "30\\%" - }, - { - "category_id": 13, - "poly": [ - 238, - 689, - 264, - 689, - 264, - 717, - 238, - 717 - ], - "score": 0.34, - "latex": "@" - }, - { - "category_id": 13, - "poly": [ - 702, - 1002, - 722, - 1002, - 722, - 1026, - 702, - 1026 - ], - "score": 0.33, - "latex": "^+" - }, - { - "category_id": 13, - "poly": [ - 177, - 1154, - 223, - 1154, - 223, - 1185, - 177, - 1185 - ], - "score": 0.28, - "latex": "(\\%)" - } - ], - "page_info": { - "page_no": 0, - "height": 2339, - "width": 1654 - } - }, - { - "layout_dets": [ - { - "category_id": 2, - "poly": [ - 88.00849151611328, - 31.891826629638672, - 300.7432861328125, - 31.891826629638672, - 300.7432861328125, - 113.5999755859375, - 88.00849151611328, - 113.5999755859375 - ], - "score": 0.9999986886978149 - }, - { - "category_id": 2, - "poly": [ - 771.0192260742188, - 2213.479248046875, - 827.4273681640625, - 2213.479248046875, - 827.4273681640625, - 2239.40185546875, - 771.0192260742188, - 2239.40185546875 - ], - "score": 0.9999963641166687 - }, - { - "category_id": 7, - "poly": [ - 544.2962646484375, - 488.5493469238281, - 988.3958129882812, - 488.5493469238281, - 988.3958129882812, - 541.0634155273438, - 544.2962646484375, - 541.0634155273438 - ], - "score": 0.9999918341636658 - }, - { - "category_id": 2, - "poly": [ - 1082.88232421875, - 82.37471771240234, - 1519.4150390625, - 82.37471771240234, - 1519.4150390625, - 114.9271011352539, - 1082.88232421875, - 114.9271011352539 - ], - "score": 0.9999632835388184 - }, - { - "category_id": 2, - "poly": [ - 1009.1597900390625, - 2210.9462890625, - 1535.9239501953125, - 2210.9462890625, - 1535.9239501953125, - 2241.830322265625, - 1009.1597900390625, - 2241.830322265625 - ], - "score": 0.9999324679374695 - }, - { - "category_id": 5, - "poly": [ - 537.349365234375, - 156.8784637451172, - 1584.9866943359375, - 156.8784637451172, - 1584.9866943359375, - 485.3042907714844, - 537.349365234375, - 485.3042907714844 - ], - "score": 0.9985955953598022 - }, - { - "category_id": 7, - "poly": [ - 62.69784927368164, - 443.4034118652344, - 249.9097137451172, - 443.4034118652344, - 249.9097137451172, - 467.4612731933594, - 62.69784927368164, - 467.4612731933594 - ], - "score": 0.9873980283737183 - }, - { - "category_id": 5, - "poly": [ - 61.374210357666016, - 138.51153564453125, - 528.30517578125, - 138.51153564453125, - 528.30517578125, - 443.5376281738281, - 61.374210357666016, - 443.5376281738281 - ], - "score": 0.9232220649719238 - }, - { - "category_id": 6, - "poly": [ - 548.1119384765625, - 148.7312774658203, - 797.3070678710938, - 148.7312774658203, - 797.3070678710938, - 180.74609375, - 548.1119384765625, - 180.74609375 - ], - "score": 0.6074804663658142 - }, - { - "category_id": 13, - "poly": [ - 864, - 455, - 922, - 455, - 922, - 482, - 864, - 482 - ], - "score": 0.74, - "latex": "6.0\\%" - }, - { - "category_id": 13, - "poly": [ - 850, - 418, - 922, - 418, - 922, - 445, - 850, - 445 - ], - "score": 0.64, - "latex": "35.3\\%" - }, - { - "category_id": 13, - "poly": [ - 1501, - 270, - 1571, - 270, - 1571, - 298, - 1501, - 298 - ], - "score": 0.54, - "latex": "13.8\\%" - }, - { - "category_id": 13, - "poly": [ - 1013, - 454, - 1083, - 454, - 1083, - 482, - 1013, - 482 - ], - "score": 0.52, - "latex": "15.0\\%" - }, - { - "category_id": 13, - "poly": [ - 1012, - 417, - 1083, - 417, - 1083, - 444, - 1012, - 444 - ], - "score": 0.52, - "latex": "33.7\\%" - }, - { - "category_id": 13, - "poly": [ - 689, - 456, - 725, - 456, - 725, - 482, - 689, - 482 - ], - "score": 0.48, - "latex": "(\\%)" - }, - { - "category_id": 13, - "poly": [ - 850, - 344, - 922, - 344, - 922, - 372, - 850, - 372 - ], - "score": 0.4, - "latex": "83.8\\%" - }, - { - "category_id": 13, - "poly": [ - 863, - 270, - 922, - 270, - 922, - 298, - 863, - 298 - ], - "score": 0.4, - "latex": "4.5\\%" - }, - { - "category_id": 13, - "poly": [ - 1334, - 270, - 1406, - 270, - 1406, - 298, - 1334, - 298 - ], - "score": 0.35, - "latex": "37.2\\%" - }, - { - "category_id": 13, - "poly": [ - 618, - 419, - 656, - 419, - 656, - 446, - 618, - 446 - ], - "score": 0.35, - "latex": "(\\%)" - } - ], - "page_info": { - "page_no": 1, - "height": 2339, - "width": 1654 - } - }, - { - "layout_dets": [ - { - "category_id": 2, - "poly": [ - 87.9037094116211, - 31.59800148010254, - 300.9930419921875, - 31.59800148010254, - 300.9930419921875, - 113.4053955078125, - 87.9037094116211, - 113.4053955078125 - ], - "score": 0.9999939799308777 - }, - { - "category_id": 2, - "poly": [ - 1008.992919921875, - 2209.248779296875, - 1534.9334716796875, - 2209.248779296875, - 1534.9334716796875, - 2242.77294921875, - 1008.992919921875, - 2242.77294921875 - ], - "score": 0.9999377131462097 - }, - { - "category_id": 2, - "poly": [ - 770.6600341796875, - 2212.857666015625, - 827.4126586914062, - 2212.857666015625, - 827.4126586914062, - 2239.77197265625, - 770.6600341796875, - 2239.77197265625 - ], - "score": 0.9998395442962646 - }, - { - "category_id": 2, - "poly": [ - 1082.096923828125, - 82.25012969970703, - 1518.9267578125, - 82.25012969970703, - 1518.9267578125, - 114.52576446533203, - 1082.096923828125, - 114.52576446533203 - ], - "score": 0.9996457099914551 - }, - { - "category_id": 7, - "poly": [ - 95.39900970458984, - 1846.6380615234375, - 564.4166870117188, - 1846.6380615234375, - 564.4166870117188, - 1899.209716796875, - 95.39900970458984, - 1899.209716796875 - ], - "score": 0.9908766746520996 - }, - { - "category_id": 6, - "poly": [ - 95.4662094116211, - 173.42832946777344, - 470.21905517578125, - 173.42832946777344, - 470.21905517578125, - 217.74632263183594, - 95.4662094116211, - 217.74632263183594 - ], - "score": 0.9437939524650574 - }, - { - "category_id": 5, - "poly": [ - 854.1142578125, - 1043.93603515625, - 1592.0174560546875, - 1043.93603515625, - 1592.0174560546875, - 1846.16552734375, - 854.1142578125, - 1846.16552734375 - ], - "score": 0.8844046592712402 - }, - { - "category_id": 5, - "poly": [ - 92.02946472167969, - 1331.8909912109375, - 814.2915649414062, - 1331.8909912109375, - 814.2915649414062, - 1842.6195068359375, - 92.02946472167969, - 1842.6195068359375 - ], - "score": 0.8743430972099304 - }, - { - "category_id": 5, - "poly": [ - 851.83984375, - 224.99559020996094, - 1592.4068603515625, - 224.99559020996094, - 1592.4068603515625, - 1018.7105712890625, - 851.83984375, - 1018.7105712890625 - ], - "score": 0.8650150299072266 - }, - { - "category_id": 5, - "poly": [ - 91.79800415039062, - 224.10838317871094, - 816.58154296875, - 224.10838317871094, - 816.58154296875, - 1248.422607421875, - 91.79800415039062, - 1248.422607421875 - ], - "score": 0.8604844808578491 - }, - { - "category_id": 5, - "poly": [ - 85.19661712646484, - 220.71524047851562, - 1602.3074951171875, - 220.71524047851562, - 1602.3074951171875, - 1844.488525390625, - 85.19661712646484, - 1844.488525390625 - ], - "score": 0.6638449430465698 - }, - { - "category_id": 13, - "poly": [ - 737, - 704, - 804, - 704, - 804, - 730, - 737, - 730 - ], - "score": 0.56, - "latex": "\\pmb{26.5\\%}" - }, - { - "category_id": 13, - "poly": [ - 738, - 673, - 804, - 673, - 804, - 699, - 738, - 699 - ], - "score": 0.48, - "latex": "\\pmb{16.2\\%}" - }, - { - "category_id": 13, - "poly": [ - 736, - 767, - 805, - 767, - 805, - 795, - 736, - 795 - ], - "score": 0.48, - "latex": "\\mathbf{\\lambda_{23.7\\%}}" - }, - { - "category_id": 13, - "poly": [ - 231, - 611, - 268, - 611, - 268, - 638, - 231, - 638 - ], - "score": 0.47, - "latex": "(\\%)" - }, - { - "category_id": 13, - "poly": [ - 749, - 736, - 804, - 736, - 804, - 763, - 749, - 763 - ], - "score": 0.41, - "latex": "\\pmb{9.2\\%}" - }, - { - "category_id": 13, - "poly": [ - 737, - 641, - 804, - 641, - 804, - 668, - 737, - 668 - ], - "score": 0.41, - "latex": "{\\bf38.0\\%}" - }, - { - "category_id": 13, - "poly": [ - 748, - 577, - 805, - 577, - 805, - 606, - 748, - 606 - ], - "score": 0.35, - "latex": "0.1\\%" - }, - { - "category_id": 13, - "poly": [ - 187, - 800, - 222, - 800, - 222, - 827, - 187, - 827 - ], - "score": 0.32, - "latex": "(\\%)" - }, - { - "category_id": 13, - "poly": [ - 738, - 830, - 805, - 830, - 805, - 857, - 738, - 857 - ], - "score": 0.28, - "latex": "\\mathbf{13.8\\%}" - }, - { - "category_id": 13, - "poly": [ - 737, - 862, - 805, - 862, - 805, - 889, - 737, - 889 - ], - "score": 0.27, - "latex": "\\mathbf{31.9\\%}" - }, - { - "category_id": 13, - "poly": [ - 736, - 955, - 804, - 955, - 804, - 983, - 736, - 983 - ], - "score": 0.26, - "latex": "\\pmb{65.3\\%}" - } - ], - "page_info": { - "page_no": 2, - "height": 2339, - "width": 1654 - } - }, - { - "layout_dets": [ - { - "category_id": 2, - "poly": [ - 86.3010025024414, - 32.05937194824219, - 303.65325927734375, - 32.05937194824219, - 303.65325927734375, - 114.77494049072266, - 86.3010025024414, - 114.77494049072266 - ], - "score": 0.9999954700469971 - }, - { - "category_id": 1, - "poly": [ - 108.4952392578125, - 590.2026977539062, - 1536.75146484375, - 590.2026977539062, - 1536.75146484375, - 688.4915771484375, - 108.4952392578125, - 688.4915771484375 - ], - "score": 0.9999932646751404 - }, - { - "category_id": 0, - "poly": [ - 95.94864654541016, - 1205.4134521484375, - 252.92477416992188, - 1205.4134521484375, - 252.92477416992188, - 1246.0015869140625, - 95.94864654541016, - 1246.0015869140625 - ], - "score": 0.999992847442627 - }, - { - "category_id": 1, - "poly": [ - 106.48407745361328, - 338.27471923828125, - 1568.86328125, - 338.27471923828125, - 1568.86328125, - 437.84783935546875, - 106.48407745361328, - 437.84783935546875 - ], - "score": 0.9999897480010986 - }, - { - "category_id": 2, - "poly": [ - 767.6918334960938, - 2212.269287109375, - 830.787353515625, - 2212.269287109375, - 830.787353515625, - 2239.28515625, - 767.6918334960938, - 2239.28515625 - ], - "score": 0.9999850988388062 - }, - { - "category_id": 0, - "poly": [ - 96.18482208251953, - 508.36334228515625, - 291.4427490234375, - 508.36334228515625, - 291.4427490234375, - 549.4661865234375, - 96.18482208251953, - 549.4661865234375 - ], - "score": 0.9999837875366211 - }, - { - "category_id": 2, - "poly": [ - 1082.2672119140625, - 81.18732452392578, - 1520.2149658203125, - 81.18732452392578, - 1520.2149658203125, - 116.55751037597656, - 1082.2672119140625, - 116.55751037597656 - ], - "score": 0.9999496340751648 - }, - { - "category_id": 0, - "poly": [ - 96.45167541503906, - 157.92835998535156, - 319.21392822265625, - 157.92835998535156, - 319.21392822265625, - 213.8436279296875, - 96.45167541503906, - 213.8436279296875 - ], - "score": 0.9999274015426636 - }, - { - "category_id": 0, - "poly": [ - 96.99238586425781, - 257.6522216796875, - 483.6472473144531, - 257.6522216796875, - 483.6472473144531, - 301.53717041015625, - 96.99238586425781, - 301.53717041015625 - ], - "score": 0.9999104738235474 - }, - { - "category_id": 2, - "poly": [ - 1008.8760986328125, - 2208.609375, - 1536.0474853515625, - 2208.609375, - 1536.0474853515625, - 2243.414306640625, - 1008.8760986328125, - 2243.414306640625 - ], - "score": 0.9998928308486938 - }, - { - "category_id": 1, - "poly": [ - 108.46533203125, - 1288.0927734375, - 1546.7518310546875, - 1288.0927734375, - 1546.7518310546875, - 1383.8438720703125, - 108.46533203125, - 1383.8438720703125 - ], - "score": 0.9997898936271667 - }, - { - "category_id": 1, - "poly": [ - 107.81462860107422, - 1678.24609375, - 1227.880615234375, - 1678.24609375, - 1227.880615234375, - 1711.37255859375, - 107.81462860107422, - 1711.37255859375 - ], - "score": 0.99957275390625 - }, - { - "category_id": 5, - "poly": [ - 109.75360107421875, - 810.0169677734375, - 1579.9549560546875, - 810.0169677734375, - 1579.9549560546875, - 1171.6383056640625, - 109.75360107421875, - 1171.6383056640625 - ], - "score": 0.9994542598724365 - }, - { - "category_id": 1, - "poly": [ - 106.46218872070312, - 1548.299072265625, - 1540.3388671875, - 1548.299072265625, - 1540.3388671875, - 1676.67919921875, - 106.46218872070312, - 1676.67919921875 - ], - "score": 0.9886452555656433 - }, - { - "category_id": 1, - "poly": [ - 107.52558898925781, - 1386.4000244140625, - 1540.886962890625, - 1386.4000244140625, - 1540.886962890625, - 1447.8128662109375, - 107.52558898925781, - 1447.8128662109375 - ], - "score": 0.9709398150444031 - }, - { - "category_id": 1, - "poly": [ - 107.66414642333984, - 1451.8369140625, - 1537.99169921875, - 1451.8369140625, - 1537.99169921875, - 1546.690185546875, - 107.66414642333984, - 1546.690185546875 - ], - "score": 0.9590120315551758 - }, - { - "category_id": 6, - "poly": [ - 95.90371704101562, - 728.2855224609375, - 328.1967468261719, - 728.2855224609375, - 328.1967468261719, - 768.121826171875, - 95.90371704101562, - 768.121826171875 - ], - "score": 0.6999977827072144 - }, - { - "category_id": 1, - "poly": [ - 106.67481994628906, - 1371.857421875, - 1544.84814453125, - 1371.857421875, - 1544.84814453125, - 1678.67236328125, - 106.67481994628906, - 1678.67236328125 - ], - "score": 0.5645973086357117 - }, - { - "category_id": 0, - "poly": [ - 95.94171142578125, - 728.264404296875, - 328.1947937011719, - 728.264404296875, - 328.1947937011719, - 768.1663818359375, - 95.94171142578125, - 768.1663818359375 - ], - "score": 0.30702608823776245 - }, - { - "category_id": 13, - "poly": [ - 1247, - 887, - 1353, - 887, - 1353, - 914, - 1247, - 914 - ], - "score": 0.91, - "latex": "5\\%{\\sim}20\\%" - }, - { - "category_id": 13, - "poly": [ - 1181, - 923, - 1290, - 923, - 1290, - 950, - 1181, - 950 - ], - "score": 0.9, - "latex": "-5\\%{+}5\\%" - }, - { - "category_id": 13, - "poly": [ - 1416, - 1047, - 1469, - 1047, - 1469, - 1077, - 1416, - 1077 - ], - "score": 0.87, - "latex": "10\\%" - }, - { - "category_id": 13, - "poly": [ - 1254, - 963, - 1296, - 963, - 1296, - 991, - 1254, - 991 - ], - "score": 0.86, - "latex": "5\\%" - }, - { - "category_id": 13, - "poly": [ - 1373, - 1003, - 1428, - 1003, - 1428, - 1032, - 1373, - 1032 - ], - "score": 0.86, - "latex": "10\\%" - }, - { - "category_id": 13, - "poly": [ - 1332, - 1047, - 1388, - 1047, - 1388, - 1076, - 1332, - 1076 - ], - "score": 0.86, - "latex": "\\cdot10\\%" - }, - { - "category_id": 13, - "poly": [ - 1373, - 1112, - 1428, - 1112, - 1428, - 1141, - 1373, - 1141 - ], - "score": 0.85, - "latex": "10\\%" - }, - { - "category_id": 13, - "poly": [ - 1248, - 854, - 1302, - 854, - 1302, - 880, - 1248, - 880 - ], - "score": 0.85, - "latex": "z0\\%" - } - ], - "page_info": { - "page_no": 3, - "height": 2339, - "width": 1654 - } - } -] \ No newline at end of file diff --git a/tests/test_cli/test_bench.py b/tests/test_cli/test_bench.py deleted file mode 100644 index 23e7bdfd..00000000 --- a/tests/test_cli/test_bench.py +++ /dev/null @@ -1,54 +0,0 @@ -""" -bench -""" -import os -import shutil -import json -from lib import calculate_score -import pytest -from conf import conf - -code_path = os.environ.get('GITHUB_WORKSPACE') -pdf_dev_path = conf.conf["pdf_dev_path"] -pdf_res_path = conf.conf["pdf_res_path"] - -class TestBench(): - """ - test bench - """ - def test_ci_ben(self): - """ - ci benchmark - """ - fr = open(os.path.join(pdf_dev_path, "result.json"), "r", encoding="utf-8") - lines = fr.readlines() - last_line = lines[-1].strip() - last_score = json.loads(last_line) - last_simscore = last_score["average_sim_score"] - last_editdistance = last_score["average_edit_distance"] - last_bleu = last_score["average_bleu_score"] - os.system(f"python tests/test_cli/lib/pre_clean.py --tool_name mineru --download_dir {pdf_dev_path}") - now_score = get_score() - print ("now_score:", now_score) - if not os.path.exists(os.path.join(pdf_dev_path, "ci")): - os.makedirs(os.path.join(pdf_dev_path, "ci"), exist_ok=True) - fw = open(os.path.join(pdf_dev_path, "ci", "result.json"), "w+", encoding="utf-8") - fw.write(json.dumps(now_score) + "\n") - now_simscore = now_score["average_sim_score"] - now_editdistance = now_score["average_edit_distance"] - now_bleu = now_score["average_bleu_score"] - assert last_simscore <= now_simscore - assert last_editdistance <= now_editdistance - assert last_bleu <= now_bleu - - -def get_score(): - """ - get score - """ - score = calculate_score.Scoring(os.path.join(pdf_dev_path, "result.json")) - score.calculate_similarity_total("mineru", pdf_dev_path) - res = score.summary_scores() - return res - - diff --git a/tests/test_cli/test_bench_gpu.py b/tests/test_cli/test_bench_gpu.py deleted file mode 100644 index 9d33c2e9..00000000 --- a/tests/test_cli/test_bench_gpu.py +++ /dev/null @@ -1,70 +0,0 @@ - -import json -import os -import shutil - -from conf import conf -from lib import calculate_score - -pdf_res_path = conf.conf['pdf_res_path'] -code_path = conf.conf['code_path'] -pdf_dev_path = conf.conf['pdf_dev_path'] -class TestCliCuda: - """test cli cuda.""" - def test_pdf_sdk_cuda(self): - """pdf sdk cuda.""" - clean_magicpdf(pdf_res_path) - pdf_to_markdown() - fr = open(os.path.join(pdf_dev_path, 'result.json'), 'r', encoding='utf-8') - lines = fr.readlines() - last_line = lines[-1].strip() - last_score = json.loads(last_line) - last_simscore = last_score['average_sim_score'] - last_editdistance = last_score['average_edit_distance'] - last_bleu = last_score['average_bleu_score'] - os.system(f'python tests/test_cli/lib/pre_clean.py --tool_name mineru --download_dir {pdf_dev_path}') - now_score = get_score() - print ('now_score:', now_score) - if not os.path.exists(os.path.join(pdf_dev_path, 'ci')): - os.makedirs(os.path.join(pdf_dev_path, 'ci'), exist_ok=True) - fw = open(os.path.join(pdf_dev_path, 'ci', 'result.json'), 'w+', encoding='utf-8') - fw.write(json.dumps(now_score) + '\n') - now_simscore = now_score['average_sim_score'] - now_editdistance = now_score['average_edit_distance'] - now_bleu = now_score['average_bleu_score'] - assert last_simscore <= now_simscore - assert last_editdistance <= now_editdistance - assert last_bleu <= now_bleu - -def pdf_to_markdown(): - """pdf to md.""" - demo_names = list() - pdf_path = os.path.join(pdf_dev_path, 'pdf') - for pdf_file in os.listdir(pdf_path): - if pdf_file.endswith('.pdf'): - demo_names.append(pdf_file.split('.')[0]) - for demo_name in demo_names: - pdf_path = os.path.join(pdf_dev_path, 'pdf', f'{demo_name}.pdf') - cmd = 'magic-pdf pdf-command --pdf %s --inside_model true' % (pdf_path) - os.system(cmd) - dir_path = os.path.join(pdf_dev_path, 'mineru') - if not os.path.exists(dir_path): - os.makedirs(dir_path, exist_ok=True) - res_path = os.path.join(dir_path, f'{demo_name}.md') - src_path = os.path.join(pdf_res_path, demo_name, 'auto', f'{demo_name}.md') - shutil.copy(src_path, res_path) - - - -def get_score(): - """get score.""" - score = calculate_score.Scoring(os.path.join(pdf_dev_path, 'result.json')) - score.calculate_similarity_total('mineru', pdf_dev_path) - res = score.summary_scores() - return res - - -def clean_magicpdf(pdf_res_path): - """clean magicpdf.""" - cmd = 'rm -rf %s' % (pdf_res_path) - os.system(cmd) diff --git a/tests/test_cli/test_cli_sdk.py b/tests/test_cli/test_cli_sdk.py deleted file mode 100644 index b239553f..00000000 --- a/tests/test_cli/test_cli_sdk.py +++ /dev/null @@ -1,424 +0,0 @@ -"""test cli and sdk.""" -import logging -import os -import pytest -from conf import conf -from lib import common -import time -import magic_pdf.model as model_config -from magic_pdf.data.read_api import read_local_images -from magic_pdf.data.read_api import read_local_office -from magic_pdf.data.data_reader_writer import S3DataReader, S3DataWriter -from magic_pdf.config.make_content_config import DropMode, MakeMode -from magic_pdf.data.data_reader_writer import FileBasedDataWriter, FileBasedDataReader -from magic_pdf.data.dataset import PymuDocDataset -from magic_pdf.model.doc_analyze_by_custom_model import doc_analyze -from magic_pdf.config.enums import SupportedPdfParseMethod -pdf_res_path = conf.conf['pdf_res_path'] -code_path = conf.conf['code_path'] -pdf_dev_path = conf.conf['pdf_dev_path'] -magic_pdf_config = "/home/quyuan/magic-pdf.json" - -class TestCli: - """test cli.""" - @pytest.fixture(autouse=True) - def setup(self): - """ - init - """ - common.clear_gpu_memory() - common.update_config_file(magic_pdf_config, "device-mode", "cuda") - # 这里可以添加任何前置操作 - yield - - @pytest.mark.P0 - def test_pdf_local_sdk(self): - """pdf sdk auto test.""" - demo_names = list() - pdf_path = os.path.join(pdf_dev_path, 'pdf') - for pdf_file in os.listdir(pdf_path): - if pdf_file.endswith('.pdf'): - demo_names.append(pdf_file.split('.')[0]) - for demo_name in demo_names: - pdf_path = os.path.join(pdf_dev_path, 'pdf', f'{demo_name}.pdf') - local_image_dir = os.path.join(pdf_dev_path, 'pdf', 'images') - image_dir = str(os.path.basename(local_image_dir)) - name_without_suff = os.path.basename(pdf_path).split(".pdf")[0] - dir_path = os.path.join(pdf_dev_path, 'mineru') - image_writer, md_writer = FileBasedDataWriter(local_image_dir), FileBasedDataWriter(dir_path) - reader1 = FileBasedDataReader("") - pdf_bytes = reader1.read(pdf_path) - ds = PymuDocDataset(pdf_bytes) - ## inference - if ds.classify() == SupportedPdfParseMethod.OCR: - infer_result = ds.apply(doc_analyze, ocr=True) - ## pipeline - pipe_result = infer_result.pipe_ocr_mode(image_writer) - else: - infer_result = ds.apply(doc_analyze, ocr=False) - ## pipeline - pipe_result = infer_result.pipe_txt_mode(image_writer) - common.delete_file(dir_path) - ### draw model result on each page - infer_result.draw_model(os.path.join(dir_path, f"{name_without_suff}_model.pdf")) - - ### get model inference result - model_inference_result = infer_result.get_infer_res() - - ### draw layout result on each page - pipe_result.draw_layout(os.path.join(dir_path, f"{name_without_suff}_layout.pdf")) - - ### draw spans result on each page - pipe_result.draw_span(os.path.join(dir_path, f"{name_without_suff}_spans.pdf")) - - ### dump markdown - md_content = pipe_result.get_markdown(image_dir) - pipe_result.dump_md(md_writer, f"{name_without_suff}.md", image_dir) - ### get content list content - content_list_content = pipe_result.get_content_list(image_dir) - pipe_result.dump_content_list(md_writer, f"{name_without_suff}_content_list.json", image_dir) - - ### get middle json - middle_json_content = pipe_result.get_middle_json() - ### dump middle json - pipe_result.dump_middle_json(md_writer, f'{name_without_suff}_middle.json') - common.sdk_count_folders_and_check_contents(dir_path) - - @pytest.mark.P0 - def test_pdf_s3_sdk(self): - """pdf s3 sdk test.""" - demo_names = list() - pdf_path = os.path.join(pdf_dev_path, 'pdf') - for pdf_file in os.listdir(pdf_path): - if pdf_file.endswith('.pdf'): - demo_names.append(pdf_file.split('.')[0]) - for demo_name in demo_names: - pdf_path = os.path.join(pdf_dev_path, 'pdf', f'{demo_name}.pdf') - local_image_dir = os.path.join(pdf_dev_path, 'pdf', 'images') - image_dir = str(os.path.basename(local_image_dir)) - name_without_suff = os.path.basename(pdf_path).split(".pdf")[0] - dir_path = os.path.join(pdf_dev_path, 'mineru') - pass - - @pytest.mark.P0 - def test_pdf_local_ppt(self): - """pdf sdk auto test.""" - demo_names = list() - pdf_path = os.path.join(pdf_dev_path, 'ppt') - for pdf_file in os.listdir(pdf_path): - if pdf_file.endswith('.pptx'): - demo_names.append(pdf_file.split('.')[0]) - for demo_name in demo_names: - pdf_path = os.path.join(pdf_dev_path, 'ppt', f'{demo_name}.pptx') - local_image_dir = os.path.join(pdf_dev_path, 'mineru', 'images') - image_dir = str(os.path.basename(local_image_dir)) - name_without_suff = os.path.basename(pdf_path).split(".pptx")[0] - dir_path = os.path.join(pdf_dev_path, 'mineru') - image_writer, md_writer = FileBasedDataWriter(local_image_dir), FileBasedDataWriter(dir_path) - ds = read_local_office(pdf_path)[0] - common.delete_file(dir_path) - - ds.apply(doc_analyze, ocr=True).pipe_txt_mode(image_writer).dump_md(md_writer, f"{name_without_suff}.md", image_dir) - common.sdk_count_folders_and_check_contents(dir_path) - - - - @pytest.mark.P0 - def test_pdf_local_image(self): - """pdf sdk auto test.""" - demo_names = list() - pdf_path = os.path.join(pdf_dev_path, 'images') - for pdf_file in os.listdir(pdf_path): - if pdf_file.endswith('.jpg'): - demo_names.append(pdf_file.split('.')[0]) - for demo_name in demo_names: - pdf_path = os.path.join(pdf_dev_path, 'images', f'{demo_name}.jpg') - local_image_dir = os.path.join(pdf_dev_path, 'mineru', 'images') - image_dir = str(os.path.basename(local_image_dir)) - name_without_suff = os.path.basename(pdf_path).split(".jpg")[0] - dir_path = os.path.join(pdf_dev_path, 'mineru') - common.delete_file(dir_path) - image_writer, md_writer = FileBasedDataWriter(local_image_dir), FileBasedDataWriter(dir_path) - ds = read_local_images(pdf_path)[0] - ds.apply(doc_analyze, ocr=True).pipe_ocr_mode(image_writer).dump_md( - md_writer, f"{name_without_suff}.md", image_dir) - common.sdk_count_folders_and_check_contents(dir_path) - - - @pytest.mark.P0 - def test_local_image_dir(self): - """local image dir.""" - demo_names = list() - pdf_path = os.path.join(pdf_dev_path, 'images') - dir_path = os.path.join(pdf_dev_path, 'mineru') - local_image_dir = os.path.join(pdf_dev_path, 'mineru', 'images') - image_dir = str(os.path.basename(local_image_dir)) - image_writer, md_writer = FileBasedDataWriter(local_image_dir), FileBasedDataWriter(dir_path) - common.delete_file(dir_path) - dss = read_local_images(pdf_path, suffixes=['.png', '.jpg']) - count = 0 - for ds in dss: - ds.apply(doc_analyze, ocr=True).pipe_ocr_mode(image_writer).dump_md(md_writer, f"{count}.md", image_dir) - count += 1 - common.sdk_count_folders_and_check_contents(dir_path) - - def test_local_doc_parse(self): - """ - doc 解析 - """ - demo_names = list() - pdf_path = os.path.join(pdf_dev_path, 'doc') - for pdf_file in os.listdir(pdf_path): - if pdf_file.endswith('.docx'): - demo_names.append(pdf_file.split('.')[0]) - for demo_name in demo_names: - pdf_path = os.path.join(pdf_dev_path, 'doc', f'{demo_name}.docx') - local_image_dir = os.path.join(pdf_dev_path, 'mineru', 'images') - image_dir = str(os.path.basename(local_image_dir)) - name_without_suff = os.path.basename(pdf_path).split(".docx")[0] - dir_path = os.path.join(pdf_dev_path, 'mineru') - image_writer, md_writer = FileBasedDataWriter(local_image_dir), FileBasedDataWriter(dir_path) - ds = read_local_office(pdf_path)[0] - common.delete_file(dir_path) - - ds.apply(doc_analyze, ocr=True).pipe_txt_mode(image_writer).dump_md(md_writer, f"{name_without_suff}.md", image_dir) - common.sdk_count_folders_and_check_contents(dir_path) - - - @pytest.mark.P0 - def test_pdf_cli_auto(self): - """magic_pdf cli test auto.""" - time.sleep(2) - demo_names = [] - pdf_path = os.path.join(pdf_dev_path, 'pdf') - for pdf_file in os.listdir(pdf_path): - if pdf_file.endswith('.pdf'): - demo_names.append(pdf_file.split('.')[0]) - for demo_name in demo_names: - res_path = os.path.join(pdf_dev_path, 'mineru') - common.delete_file(res_path) - cmd = 'magic-pdf -p %s -o %s -m %s' % (os.path.join( - pdf_path, f'{demo_name}.pdf'), res_path, 'auto') - logging.info(cmd) - os.system(cmd) - common.cli_count_folders_and_check_contents( - os.path.join(res_path, demo_name, 'auto')) - - @pytest.mark.P0 - def test_pdf_cli_txt(self): - """magic_pdf cli test txt.""" - time.sleep(2) - demo_names = [] - pdf_path = os.path.join(pdf_dev_path, 'pdf') - for pdf_file in os.listdir(pdf_path): - if pdf_file.endswith('.pdf'): - demo_names.append(pdf_file.split('.')[0]) - for demo_name in demo_names: - res_path = os.path.join(pdf_dev_path, 'mineru') - common.delete_file(res_path) - cmd = 'magic-pdf -p %s -o %s -m %s' % (os.path.join( - pdf_path, f'{demo_name}.pdf'), res_path, 'txt') - logging.info(cmd) - os.system(cmd) - common.cli_count_folders_and_check_contents( - os.path.join(res_path, demo_name, 'txt')) - - @pytest.mark.P0 - def test_pdf_cli_ocr(self): - """magic_pdf cli test ocr.""" - time.sleep(2) - demo_names = [] - pdf_path = os.path.join(pdf_dev_path, 'pdf') - for pdf_file in os.listdir(pdf_path): - if pdf_file.endswith('.pdf'): - demo_names.append(pdf_file.split('.')[0]) - for demo_name in demo_names: - res_path = os.path.join(pdf_dev_path, 'mineru') - common.delete_file(res_path) - cmd = 'magic-pdf -p %s -o %s -m %s' % (os.path.join( - pdf_path, f'{demo_name}.pdf'), res_path, 'ocr') - logging.info(cmd) - os.system(cmd) - common.cli_count_folders_and_check_contents( - os.path.join(res_path, demo_name, 'ocr')) - - @pytest.mark.skip(reason='out-of-date api') - @pytest.mark.P1 - def test_pdf_dev_cli_local_jsonl_txt(self): - """magic_pdf_dev cli local txt.""" - time.sleep(2) - jsonl_path = os.path.join(pdf_dev_path, 'line1.jsonl') - cmd = 'magic-pdf-dev --jsonl %s --method %s' % (jsonl_path, "txt") - logging.info(cmd) - os.system(cmd) - - @pytest.mark.skip(reason='out-of-date api') - @pytest.mark.P1 - def test_pdf_dev_cli_local_jsonl_ocr(self): - """magic_pdf_dev cli local ocr.""" - time.sleep(2) - jsonl_path = os.path.join(pdf_dev_path, 'line1.jsonl') - cmd = 'magic-pdf-dev --jsonl %s --method %s' % (jsonl_path, 'ocr') - logging.info(cmd) - os.system(cmd) - - @pytest.mark.skip(reason='out-of-date api') - @pytest.mark.P1 - def test_pdf_dev_cli_local_jsonl_auto(self): - """magic_pdf_dev cli local auto.""" - time.sleep(2) - jsonl_path = os.path.join(pdf_dev_path, 'line1.jsonl') - cmd = 'magic-pdf-dev --jsonl %s --method %s' % (jsonl_path, 'auto') - logging.info(cmd) - os.system(cmd) - - @pytest.mark.skip(reason='out-of-date api') - @pytest.mark.P1 - def test_pdf_dev_cli_s3_jsonl_txt(self): - """magic_pdf_dev cli s3 txt.""" - time.sleep(2) - jsonl_path = os.path.join(pdf_dev_path, 'line1.jsonl') - cmd = 'magic-pdf-dev --jsonl %s --method %s' % (jsonl_path, "txt") - logging.info(cmd) - os.system(cmd) - - @pytest.mark.skip(reason='out-of-date api') - @pytest.mark.P1 - def test_pdf_dev_cli_s3_jsonl_ocr(self): - """magic_pdf_dev cli s3 ocr.""" - time.sleep(2) - jsonl_path = os.path.join(pdf_dev_path, 'line1.jsonl') - cmd = 'magic-pdf-dev --jsonl %s --method %s' % (jsonl_path, 'ocr') - logging.info(cmd) - os.system(cmd) - - @pytest.mark.skip(reason='out-of-date api') - @pytest.mark.P1 - def test_pdf_dev_cli_s3_jsonl_auto(self): - """magic_pdf_dev cli s3 auto.""" - time.sleep(2) - jsonl_path = os.path.join(pdf_dev_path, 'line1.jsonl') - cmd = 'magic-pdf-dev --jsonl %s --method %s' % (jsonl_path, 'auto') - logging.info(cmd) - os.system(cmd) - - @pytest.mark.P1 - def test_pdf_dev_cli_pdf_json_auto(self): - """magic_pdf_dev cli pdf+json auto.""" - time.sleep(2) - json_path = os.path.join(pdf_dev_path, 'test_model.json') - pdf_path = os.path.join(pdf_dev_path, 'pdf', 'test_rearch_report.pdf') - cmd = 'magic-pdf-dev --pdf %s --json %s --method %s' % (pdf_path, json_path, 'auto') - logging.info(cmd) - os.system(cmd) - - @pytest.mark.skip(reason='out-of-date api') - @pytest.mark.P1 - def test_pdf_dev_cli_pdf_json_ocr(self): - """magic_pdf_dev cli pdf+json ocr.""" - time.sleep(2) - json_path = os.path.join(pdf_dev_path, 'test_model.json') - pdf_path = os.path.join(pdf_dev_path, 'pdf', 'test_rearch_report.pdf') - cmd = 'magic-pdf-dev --pdf %s --json %s --method %s' % (pdf_path, json_path, 'auto') - logging.info(cmd) - os.system(cmd) - - @pytest.mark.P1 - def test_local_magic_pdf_open_rapidai_table(self): - """magic pdf cli open rapid ai table.""" - time.sleep(2) - #pre_cmd = "cp ~/magic_pdf_html.json ~/magic-pdf.json" - #os.system(pre_cmd) - value = { - "model": "rapid_table", - "enable": True, - "sub_model": "slanet_plus", - "max_time": 400 - } - common.update_config_file(magic_pdf_config, "table-config", value) - pdf_path = os.path.join(pdf_dev_path, "pdf", "test_rearch_report.pdf") - common.delete_file(pdf_res_path) - cli_cmd = "magic-pdf -p %s -o %s" % (pdf_path, pdf_res_path) - os.system(cli_cmd) - res = common.check_html_table_exists(os.path.join(pdf_res_path, "test_rearch_report", "auto", "test_rearch_report.md")) - assert res is True - - - @pytest.mark.P1 - def test_local_magic_pdf_doclayout_yolo(self): - """magic pdf cli open doclyaout yolo.""" - time.sleep(2) - #pre_cmd = "cp ~/magic_pdf_html.json ~/magic-pdf.json" - #os.system(pre_cmd) - value = { - "model": "doclayout_yolo" - } - common.update_config_file(magic_pdf_config, "layout-config", value) - pdf_path = os.path.join(pdf_dev_path, "pdf", "test_rearch_report.pdf") - common.delete_file(pdf_res_path) - cli_cmd = "magic-pdf -p %s -o %s" % (pdf_path, pdf_res_path) - os.system(cli_cmd) - common.cli_count_folders_and_check_contents(os.path.join(pdf_res_path, "test_rearch_report", "auto")) - - @pytest.mark.skip(reason="layoutlmv3废弃") - @pytest.mark.P1 - def test_local_magic_pdf_layoutlmv3_yolo(self): - """magic pdf cli open layoutlmv3.""" - time.sleep(2) - value = { - "model": "layoutlmv3" - } - common.update_config_file(magic_pdf_config, "layout-config", value) - pdf_path = os.path.join(pdf_dev_path, "pdf", "test_rearch_report.pdf") - common.delete_file(pdf_res_path) - cli_cmd = "magic-pdf -p %s -o %s" % (pdf_path, pdf_res_path) - os.system(cli_cmd) - common.cli_count_folders_and_check_contents(os.path.join(pdf_res_path, "test_rearch_report", "auto")) - #res = common.check_html_table_exists(os.path.join(pdf_res_path, "test_rearch_report", "auto", "test_rearch_report.md")) - - @pytest.mark.P1 - def test_magic_pdf_cpu(self): - """magic pdf cli cpu mode.""" - time.sleep(2) - #pre_cmd = "cp ~/magic_pdf_html_table_cpu.json ~/magic-pdf.json" - #os.system(pre_cmd) - value = { - "model": "rapid_table", - "enable": True, - "sub_model": "slanet_plus", - "max_time": 400 - } - common.update_config_file(magic_pdf_config, "table-config", value) - common.update_config_file(magic_pdf_config, "device-mode", "cpu") - pdf_path = os.path.join(pdf_dev_path, "pdf", "test_rearch_report.pdf") - common.delete_file(pdf_res_path) - cli_cmd = "magic-pdf -p %s -o %s" % (pdf_path, pdf_res_path) - os.system(cli_cmd) - common.cli_count_folders_and_check_contents(os.path.join(pdf_res_path, "test_rearch_report", "auto")) - - - @pytest.mark.P1 - def test_local_magic_pdf_close_html_table(self): - """magic pdf cli close table.""" - time.sleep(2) - #pre_cmd = "cp ~/magic_pdf_close_table.json ~/magic-pdf.json" - #os.system(pre_cmd) - value = { - "model": "rapid_table", - "enable": False, - "sub_model": "slanet_plus", - "max_time": 400 - } - common.update_config_file(magic_pdf_config, "table-config", value) - pdf_path = os.path.join(pdf_dev_path, "pdf", "test_rearch_report.pdf") - common.delete_file(pdf_res_path) - cli_cmd = "magic-pdf -p %s -o %s" % (pdf_path, pdf_res_path) - os.system(cli_cmd) - res = common.check_close_tables(os.path.join(pdf_res_path, "test_rearch_report", "auto", "test_rearch_report.md")) - assert res is True - - - -if __name__ == '__main__': - pytest.main() - diff --git a/tests/unittest/test_integrations/test_rag/assets/one_page_with_table_image.pdf b/tests/unittest/pdfs/test.pdf similarity index 81% rename from tests/unittest/test_integrations/test_rag/assets/one_page_with_table_image.pdf rename to tests/unittest/pdfs/test.pdf index 85fd9a7a..c8f64443 100644 Binary files a/tests/unittest/test_integrations/test_rag/assets/one_page_with_table_image.pdf and b/tests/unittest/pdfs/test.pdf differ diff --git a/tests/unittest/test_data/__init__.py b/tests/unittest/test_data/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/unittest/test_data/assets/jsonl/test_01.jsonl b/tests/unittest/test_data/assets/jsonl/test_01.jsonl deleted file mode 100644 index e3bfabb4..00000000 --- a/tests/unittest/test_data/assets/jsonl/test_01.jsonl +++ /dev/null @@ -1 +0,0 @@ -{"track_id":"e8824f5a-9fcb-4ee5-b2d4-6bf2c67019dc","path":"s3://sci-hub/enbook-scimag/78800000/libgen.scimag78872000-78872999/10.1017/cbo9780511770425.012.pdf","file_type":"pdf","content_type":"application/pdf","content_length":80078,"title":"German Idealism and the Concept of Punishment || Conclusion","remark":{"file_id":"scihub_78800000/libgen.scimag78872000-78872999.zip_10.1017/cbo9780511770425.012","file_source_type":"paper","original_file_id":"10.1017/cbo9780511770425.012","file_name":"10.1017/cbo9780511770425.012.pdf","author":"Merle, Jean-Christophe"}} diff --git a/tests/unittest/test_data/assets/jsonl/test_02.jsonl b/tests/unittest/test_data/assets/jsonl/test_02.jsonl deleted file mode 100644 index c84278e6..00000000 --- a/tests/unittest/test_data/assets/jsonl/test_02.jsonl +++ /dev/null @@ -1 +0,0 @@ -{"track_id":"e8824f5a-9fcb-4ee5-b2d4-6bf2c67019dc","path":"tests/unittest/test_data/assets/pdfs/test_02.pdf","file_type":"pdf","content_type":"application/pdf","content_length":80078,"title":"German Idealism and the Concept of Punishment || Conclusion","remark":{"file_id":"scihub_78800000/libgen.scimag78872000-78872999.zip_10.1017/cbo9780511770425.012","file_source_type":"paper","original_file_id":"10.1017/cbo9780511770425.012","file_name":"10.1017/cbo9780511770425.012.pdf","author":"Merle, Jean-Christophe"}} diff --git a/tests/unittest/test_data/assets/pdfs/test_01.pdf b/tests/unittest/test_data/assets/pdfs/test_01.pdf deleted file mode 100644 index 229be9ce..00000000 Binary files a/tests/unittest/test_data/assets/pdfs/test_01.pdf and /dev/null differ diff --git a/tests/unittest/test_data/assets/pdfs/test_02.pdf b/tests/unittest/test_data/assets/pdfs/test_02.pdf deleted file mode 100644 index 1adcc01c..00000000 Binary files a/tests/unittest/test_data/assets/pdfs/test_02.pdf and /dev/null differ diff --git a/tests/unittest/test_data/assets/pngs/test_01.png b/tests/unittest/test_data/assets/pngs/test_01.png deleted file mode 100644 index d247efc0..00000000 Binary files a/tests/unittest/test_data/assets/pngs/test_01.png and /dev/null differ diff --git a/tests/unittest/test_data/assets/pngs/test_02.png b/tests/unittest/test_data/assets/pngs/test_02.png deleted file mode 100644 index 1f3e7921..00000000 Binary files a/tests/unittest/test_data/assets/pngs/test_02.png and /dev/null differ diff --git a/tests/unittest/test_data/data_reader_writer/__init__.py b/tests/unittest/test_data/data_reader_writer/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/unittest/test_data/data_reader_writer/test_filebase.py b/tests/unittest/test_data/data_reader_writer/test_filebase.py deleted file mode 100644 index 8978db4f..00000000 --- a/tests/unittest/test_data/data_reader_writer/test_filebase.py +++ /dev/null @@ -1,24 +0,0 @@ -import os -import shutil - -from magic_pdf.data.data_reader_writer import (FileBasedDataReader, - FileBasedDataWriter) - - -def test_filebased_reader_writer(): - - unitest_dir = '/tmp/magic_pdf/unittest/data/filebased_reader_writer' - sub_dir = os.path.join(unitest_dir, 'sub') - abs_fn = os.path.join(unitest_dir, 'abspath.txt') - - os.makedirs(sub_dir, exist_ok=True) - - writer = FileBasedDataWriter(sub_dir) - reader = FileBasedDataReader(sub_dir) - - writer.write('test.txt', b'hello world') - assert reader.read('test.txt') == b'hello world' - - writer.write(abs_fn, b'hello world') - assert reader.read(abs_fn) == b'hello world' - shutil.rmtree(unitest_dir) diff --git a/tests/unittest/test_data/data_reader_writer/test_multi_bucket_s3.py b/tests/unittest/test_data/data_reader_writer/test_multi_bucket_s3.py deleted file mode 100644 index 898a74cc..00000000 --- a/tests/unittest/test_data/data_reader_writer/test_multi_bucket_s3.py +++ /dev/null @@ -1,160 +0,0 @@ -import json -import os - -import fitz -import pytest - -from magic_pdf.data.data_reader_writer import (MultiBucketS3DataReader, - MultiBucketS3DataWriter) -from magic_pdf.data.schemas import S3Config - - -@pytest.mark.skipif( - os.getenv('S3_ACCESS_KEY_2', None) is None, reason='need s3 config!' -) -def test_multi_bucket_s3_reader_writer(): - """test multi bucket s3 reader writer must config s3 config in the - environment export S3_BUCKET=xxx export S3_ACCESS_KEY=xxx export - S3_SECRET_KEY=xxx export S3_ENDPOINT=xxx. - - export S3_BUCKET_2=xxx export S3_ACCESS_KEY_2=xxx export S3_SECRET_KEY_2=xxx export S3_ENDPOINT_2=xxx - """ - bucket = os.getenv('S3_BUCKET', '') - ak = os.getenv('S3_ACCESS_KEY', '') - sk = os.getenv('S3_SECRET_KEY', '') - endpoint_url = os.getenv('S3_ENDPOINT', '') - - bucket_2 = os.getenv('S3_BUCKET_2', '') - ak_2 = os.getenv('S3_ACCESS_KEY_2', '') - sk_2 = os.getenv('S3_SECRET_KEY_2', '') - endpoint_url_2 = os.getenv('S3_ENDPOINT_2', '') - - s3configs = [ - S3Config( - bucket_name=bucket, access_key=ak, secret_key=sk, endpoint_url=endpoint_url - ), - S3Config( - bucket_name=bucket_2, - access_key=ak_2, - secret_key=sk_2, - endpoint_url=endpoint_url_2, - ), - ] - - reader = MultiBucketS3DataReader(bucket, s3configs) - writer = MultiBucketS3DataWriter(bucket, s3configs) - - bits = reader.read('meta-index/scihub/v001/scihub/part-66210c190659-000026.jsonl') - - assert bits == reader.read( - f's3://{bucket}/meta-index/scihub/v001/scihub/part-66210c190659-000026.jsonl' - ) - - bits = reader.read( - f's3://{bucket_2}/enbook-scimag/78800000/libgen.scimag78872000-78872999/10.1017/cbo9780511770425.012.pdf' - ) - docs = fitz.open('pdf', bits) - assert len(docs) == 10 - - bits = reader.read( - 'meta-index/scihub/v001/scihub/part-66210c190659-000026.jsonl?bytes=566,713' - ) - assert bits == reader.read_at( - 'meta-index/scihub/v001/scihub/part-66210c190659-000026.jsonl', 566, 713 - ) - assert len(json.loads(bits)) > 0 - - writer.write_string( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test01.txt', 'abc' - ) - - assert 'abc'.encode() == reader.read( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test01.txt' - ) - - writer.write( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test02.txt', - '123'.encode(), - ) - - assert '123'.encode() == reader.read( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test02.txt' - ) - - -@pytest.mark.skipif( - os.getenv('S3_ACCESS_KEY_2', None) is None, reason='need s3 config!' -) -def test_multi_bucket_s3_reader_writer_with_prefix(): - """test multi bucket s3 reader writer must config s3 config in the - environment export S3_BUCKET=xxx export S3_ACCESS_KEY=xxx export - S3_SECRET_KEY=xxx export S3_ENDPOINT=xxx. - - export S3_BUCKET_2=xxx export S3_ACCESS_KEY_2=xxx export S3_SECRET_KEY_2=xxx export S3_ENDPOINT_2=xxx - """ - bucket = os.getenv('S3_BUCKET', '') - ak = os.getenv('S3_ACCESS_KEY', '') - sk = os.getenv('S3_SECRET_KEY', '') - endpoint_url = os.getenv('S3_ENDPOINT', '') - - bucket_2 = os.getenv('S3_BUCKET_2', '') - ak_2 = os.getenv('S3_ACCESS_KEY_2', '') - sk_2 = os.getenv('S3_SECRET_KEY_2', '') - endpoint_url_2 = os.getenv('S3_ENDPOINT_2', '') - - s3configs = [ - S3Config( - bucket_name=bucket, access_key=ak, secret_key=sk, endpoint_url=endpoint_url - ), - S3Config( - bucket_name=bucket_2, - access_key=ak_2, - secret_key=sk_2, - endpoint_url=endpoint_url_2, - ), - ] - - prefix = 'meta-index' - reader = MultiBucketS3DataReader(f'{bucket}/{prefix}', s3configs) - writer = MultiBucketS3DataWriter(f'{bucket}/{prefix}', s3configs) - - bits = reader.read('scihub/v001/scihub/part-66210c190659-000026.jsonl') - - assert bits == reader.read( - f's3://{bucket}/{prefix}/scihub/v001/scihub/part-66210c190659-000026.jsonl' - ) - - bits = reader.read( - f's3://{bucket_2}/enbook-scimag/78800000/libgen.scimag78872000-78872999/10.1017/cbo9780511770425.012.pdf' - ) - docs = fitz.open('pdf', bits) - assert len(docs) == 10 - - bits = reader.read( - 'scihub/v001/scihub/part-66210c190659-000026.jsonl?bytes=566,713' - ) - assert bits == reader.read_at( - 'scihub/v001/scihub/part-66210c190659-000026.jsonl', 566, 713 - ) - assert len(json.loads(bits)) > 0 - - writer.write_string( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test01.txt', 'abc' - ) - - assert 'abc'.encode() == reader.read( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test01.txt' - ) - - assert 'abc'.encode() == reader.read( - f's3://{bucket}/{prefix}/unittest/data/data_reader_writer/multi_bucket_s3_data/test01.txt' - ) - - writer.write( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test02.txt', - '123'.encode(), - ) - - assert '123'.encode() == reader.read( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test02.txt' - ) diff --git a/tests/unittest/test_data/data_reader_writer/test_s3.py b/tests/unittest/test_data/data_reader_writer/test_s3.py deleted file mode 100644 index 8d8ef8b2..00000000 --- a/tests/unittest/test_data/data_reader_writer/test_s3.py +++ /dev/null @@ -1,106 +0,0 @@ -import json -import os - -import pytest - -from magic_pdf.data.data_reader_writer import S3DataReader, S3DataWriter - - -@pytest.mark.skipif( - os.getenv('S3_ACCESS_KEY', None) is None, reason='need s3 config!' -) -def test_s3_reader_writer(): - """test multi bucket s3 reader writer must config s3 config in the - environment export S3_BUCKET=xxx export S3_ACCESS_KEY=xxx export - S3_SECRET_KEY=xxx export S3_ENDPOINT=xxx.""" - bucket = os.getenv('S3_BUCKET', '') - ak = os.getenv('S3_ACCESS_KEY', '') - sk = os.getenv('S3_SECRET_KEY', '') - endpoint_url = os.getenv('S3_ENDPOINT', '') - - reader = S3DataReader('', bucket, ak, sk, endpoint_url) - writer = S3DataWriter('', bucket, ak, sk, endpoint_url) - - bits = reader.read('meta-index/scihub/v001/scihub/part-66210c190659-000026.jsonl') - - assert bits == reader.read( - f's3://{bucket}/meta-index/scihub/v001/scihub/part-66210c190659-000026.jsonl' - ) - - bits = reader.read( - 'meta-index/scihub/v001/scihub/part-66210c190659-000026.jsonl?bytes=566,713' - ) - assert bits == reader.read_at( - 'meta-index/scihub/v001/scihub/part-66210c190659-000026.jsonl', 566, 713 - ) - assert len(json.loads(bits)) > 0 - - writer.write_string( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test01.txt', 'abc' - ) - - assert 'abc'.encode() == reader.read( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test01.txt' - ) - - writer.write( - f'{bucket}/unittest/data/data_reader_writer/multi_bucket_s3_data/test02.txt', - '123'.encode(), - ) - - assert '123'.encode() == reader.read( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test02.txt' - ) - - -@pytest.mark.skipif( - os.getenv('S3_ACCESS_KEY', None) is None, reason='need s3 config!' -) -def test_s3_reader_writer_with_prefix(): - """test multi bucket s3 reader writer must config s3 config in the - environment export S3_BUCKET=xxx export S3_ACCESS_KEY=xxx export - S3_SECRET_KEY=xxx export S3_ENDPOINT=xxx.""" - bucket = os.getenv('S3_BUCKET', '') - ak = os.getenv('S3_ACCESS_KEY', '') - sk = os.getenv('S3_SECRET_KEY', '') - endpoint_url = os.getenv('S3_ENDPOINT', '') - - prefix = 'meta-index' - - reader = S3DataReader(prefix, bucket, ak, sk, endpoint_url) - writer = S3DataWriter(prefix, bucket, ak, sk, endpoint_url) - - bits = reader.read('scihub/v001/scihub/part-66210c190659-000026.jsonl') - - assert bits == reader.read( - f's3://{bucket}/{prefix}/scihub/v001/scihub/part-66210c190659-000026.jsonl' - ) - - bits = reader.read( - 'scihub/v001/scihub/part-66210c190659-000026.jsonl?bytes=566,713' - ) - assert bits == reader.read_at( - 'scihub/v001/scihub/part-66210c190659-000026.jsonl', 566, 713 - ) - assert len(json.loads(bits)) > 0 - - writer.write_string( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test01.txt', 'abc' - ) - - assert 'abc'.encode() == reader.read( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test01.txt' - ) - - assert 'abc'.encode() == reader.read( - f's3://{bucket}/{prefix}/unittest/data/data_reader_writer/multi_bucket_s3_data/test01.txt' - ) - - writer.write( - f'{bucket}/{prefix}/unittest/data/data_reader_writer/multi_bucket_s3_data/test02.txt', - '123'.encode(), - ) - - assert '123'.encode() == reader.read( - 'unittest/data/data_reader_writer/multi_bucket_s3_data/test02.txt' - ) diff --git a/tests/unittest/test_data/io/__init__.py b/tests/unittest/test_data/io/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/unittest/test_data/io/test_s3.py b/tests/unittest/test_data/io/test_s3.py deleted file mode 100644 index ce84a2a8..00000000 --- a/tests/unittest/test_data/io/test_s3.py +++ /dev/null @@ -1,55 +0,0 @@ -import json -import os - -import pytest - -from magic_pdf.data.io.s3 import S3Reader, S3Writer - - -@pytest.mark.skipif( - os.getenv('S3_ACCESS_KEY', None) is None, reason='s3 config not found' -) -def test_s3_reader(): - """test s3 reader. - - must config s3 config in the environment export S3_BUCKET=xxx export S3_ACCESS_KEY=xxx export S3_SECRET_KEY=xxx - export S3_ENDPOINT=xxx - """ - - bucket = os.getenv('S3_BUCKET', '') - ak = os.getenv('S3_ACCESS_KEY', '') - sk = os.getenv('S3_SECRET_KEY', '') - endpoint_url = os.getenv('S3_ENDPOINT', '') - reader = S3Reader(bucket=bucket, ak=ak, sk=sk, endpoint_url=endpoint_url) - bits = reader.read( - 'meta-index/scihub/v001/scihub/part-66210c190659-000026.jsonl' - ) - assert len(bits) > 0 - - bits = reader.read_at( - 'meta-index/scihub/v001/scihub/part-66210c190659-000026.jsonl', - 566, - 713, - ) - assert len(json.loads(bits)) > 0 - - -@pytest.mark.skipif( - os.getenv('S3_ACCESS_KEY', None) is None, reason='s3 config not found' -) -def test_s3_writer(): - """test s3 reader. - - must config s3 config in the environment export S3_BUCKET=xxx export S3_ACCESS_KEY=xxx export S3_SECRET_KEY=xxx - export S3_ENDPOINT=xxx - """ - bucket = os.getenv('S3_BUCKET', '') - ak = os.getenv('S3_ACCESS_KEY', '') - sk = os.getenv('S3_SECRET_KEY', '') - endpoint_url = os.getenv('S3_ENDPOINT', '') - writer = S3Writer(bucket=bucket, ak=ak, sk=sk, endpoint_url=endpoint_url) - test_fn = 'unittest/io/test.jsonl' - writer.write(test_fn, '123'.encode()) - reader = S3Reader(bucket=bucket, ak=ak, sk=sk, endpoint_url=endpoint_url) - bits = reader.read(test_fn) - assert bits.decode() == '123' diff --git a/tests/unittest/test_data/test_dataset.py b/tests/unittest/test_data/test_dataset.py deleted file mode 100644 index aa621dbc..00000000 --- a/tests/unittest/test_data/test_dataset.py +++ /dev/null @@ -1,18 +0,0 @@ - -from magic_pdf.data.dataset import ImageDataset, PymuDocDataset - - -def test_pymudataset(): - with open('tests/unittest/test_data/assets/pdfs/test_01.pdf', 'rb') as f: - bits = f.read() - datasets = PymuDocDataset(bits) - assert len(datasets) > 0 - assert datasets.get_page(0).get_page_info().h > 100 - - -def test_imagedataset(): - with open('tests/unittest/test_data/assets/pngs/test_01.png', 'rb') as f: - bits = f.read() - datasets = ImageDataset(bits) - assert len(datasets) == 1 - assert datasets.get_page(0).get_page_info().w > 100 diff --git a/tests/unittest/test_data/test_json_compressor.py b/tests/unittest/test_data/test_json_compressor.py deleted file mode 100644 index 39b9edfc..00000000 --- a/tests/unittest/test_data/test_json_compressor.py +++ /dev/null @@ -1,115 +0,0 @@ -import pytest -import json -from magic_pdf.libs.json_compressor import JsonCompressor - -# Test data fixtures -@pytest.fixture -def test_cases(): - return [ - # Simple dictionary - {"name": "John", "age": 30}, - - # Nested dictionary - { - "person": { - "name": "Alice", - "address": { - "street": "123 Main St", - "city": "New York" - } - } - }, - - # List of dictionaries - [ - {"id": 1, "value": "first"}, - {"id": 2, "value": "second"} - ], - - # Dictionary with various data types - { - "string": "hello", - "integer": 42, - "float": 3.14, - "boolean": True, - "null": None, - "array": [1, 2, 3], - "nested": {"key": "value"} - }, - - # Empty structures - {}, - [], - {"empty_list": [], "empty_dict": {}} - ] - -@pytest.fixture -def large_data(): - return { - "data": ["test" * 100] * 100 # Create a large repeated string - } - -def test_compression_decompression_cycle(test_cases): - """Test that data remains intact after compression and decompression""" - for test_data in test_cases: - # Compress the data - compressed = JsonCompressor.compress_json(test_data) - - # Verify compressed string is not empty and is a string - assert isinstance(compressed, str) - assert len(compressed) > 0 - - # Decompress the data - decompressed = JsonCompressor.decompress_json(compressed) - - # Verify the decompressed data matches original - assert test_data == decompressed - -def test_compression_reduces_size(large_data): - """Test that compression actually reduces data size for large enough input""" - original_size = len(json.dumps(large_data)) - compressed = JsonCompressor.compress_json(large_data) - compressed_size = len(compressed) - - # Verify compression actually saved space - assert compressed_size < original_size - -def test_invalid_json_serializable(): - """Test handling of non-JSON serializable input""" - with pytest.raises(TypeError): - JsonCompressor.compress_json(set([1, 2, 3])) # sets are not JSON serializable - -def test_invalid_compressed_string(): - """Test handling of invalid compressed string""" - with pytest.raises(Exception): - JsonCompressor.decompress_json("invalid_base64_string") - -def test_empty_string_input(): - """Test handling of empty string input""" - with pytest.raises(Exception): - JsonCompressor.decompress_json("") - -def test_special_characters(): - """Test handling of special characters""" - test_data = { - "special": "!@#$%^&*()_+-=[]{}|;:,.<>?", - "unicode": "Hello 世界 🌍" - } - - compressed = JsonCompressor.compress_json(test_data) - decompressed = JsonCompressor.decompress_json(compressed) - assert test_data == decompressed - -# Parametrized test for different types of input -@pytest.mark.parametrize("test_input", [ - {"simple": "value"}, - [1, 2, 3], - {"nested": {"key": "value"}}, - ["mixed", 1, True, None], - {"unicode": "🌍"} -]) -def test_various_input_types(test_input): - """Test compression and decompression with various input types""" - compressed = JsonCompressor.compress_json(test_input) - decompressed = JsonCompressor.decompress_json(compressed) - assert test_input == decompressed \ No newline at end of file diff --git a/tests/unittest/test_data/test_read_api.py b/tests/unittest/test_data/test_read_api.py deleted file mode 100644 index 9f7a4627..00000000 --- a/tests/unittest/test_data/test_read_api.py +++ /dev/null @@ -1,78 +0,0 @@ -import os - -import pytest - -from magic_pdf.data.data_reader_writer import MultiBucketS3DataReader -from magic_pdf.data.read_api import (read_jsonl, read_local_images, - read_local_pdfs) -from magic_pdf.data.schemas import S3Config - - -def test_read_local_pdfs(): - datasets = read_local_pdfs('tests/unittest/test_data/assets/pdfs') - assert len(datasets) == 2 - assert len(datasets[0]) > 0 - assert len(datasets[1]) > 0 - - assert datasets[0].get_page(0).get_page_info().w > 0 - assert datasets[0].get_page(0).get_page_info().h > 0 - - -def test_read_local_images(): - datasets = read_local_images('tests/unittest/test_data/assets/pngs', suffixes=['.png']) - assert len(datasets) == 2 - assert len(datasets[0]) == 1 - assert len(datasets[1]) == 1 - - assert datasets[0].get_page(0).get_page_info().w > 0 - assert datasets[0].get_page(0).get_page_info().h > 0 - - -@pytest.mark.skipif( - os.getenv('S3_ACCESS_KEY_2', None) is None, reason='need s3 config!' -) -def test_read_json(): - """test multi bucket s3 reader writer must config s3 config in the - environment export S3_BUCKET=xxx export S3_ACCESS_KEY=xxx export - S3_SECRET_KEY=xxx export S3_ENDPOINT=xxx. - - export S3_BUCKET_2=xxx export S3_ACCESS_KEY_2=xxx export S3_SECRET_KEY_2=xxx export S3_ENDPOINT_2=xxx - """ - bucket = os.getenv('S3_BUCKET', '') - ak = os.getenv('S3_ACCESS_KEY', '') - sk = os.getenv('S3_SECRET_KEY', '') - endpoint_url = os.getenv('S3_ENDPOINT', '') - - bucket_2 = os.getenv('S3_BUCKET_2', '') - ak_2 = os.getenv('S3_ACCESS_KEY_2', '') - sk_2 = os.getenv('S3_SECRET_KEY_2', '') - endpoint_url_2 = os.getenv('S3_ENDPOINT_2', '') - - s3configs = [ - S3Config( - bucket_name=bucket, access_key=ak, secret_key=sk, endpoint_url=endpoint_url - ), - S3Config( - bucket_name=bucket_2, - access_key=ak_2, - secret_key=sk_2, - endpoint_url=endpoint_url_2, - ), - ] - - reader = MultiBucketS3DataReader(bucket, s3configs) - - datasets = read_jsonl( - f's3://{bucket}/meta-index/scihub/v001/scihub/part-66210c190659-000026.jsonl', - reader, - ) - assert len(datasets) > 0 - assert len(datasets[0]) == 10 - - datasets = read_jsonl('tests/unittest/test_data/assets/jsonl/test_01.jsonl', reader) - assert len(datasets) == 1 - assert len(datasets[0]) == 10 - - datasets = read_jsonl('tests/unittest/test_data/assets/jsonl/test_02.jsonl') - assert len(datasets) == 1 - assert len(datasets[0]) == 1 diff --git a/tests/unittest/test_e2e.py b/tests/unittest/test_e2e.py new file mode 100644 index 00000000..d0b99911 --- /dev/null +++ b/tests/unittest/test_e2e.py @@ -0,0 +1,336 @@ +# Copyright (c) Opendatalab. All rights reserved. +import copy +import json +import os +from pathlib import Path + +from cryptography.hazmat.backends.openssl import backend +from loguru import logger + +from mineru.cli.common import ( + convert_pdf_bytes_to_bytes_by_pypdfium2, + prepare_env, + read_fn, +) +from mineru.data.data_reader_writer import FileBasedDataWriter +from mineru.utils.draw_bbox import draw_layout_bbox, draw_span_bbox +from mineru.utils.enum_class import MakeMode +from mineru.backend.vlm.vlm_analyze import doc_analyze as vlm_doc_analyze +from mineru.backend.pipeline.pipeline_analyze import doc_analyze as pipeline_doc_analyze +from mineru.backend.pipeline.pipeline_middle_json_mkcontent import ( + union_make as pipeline_union_make, +) +from mineru.backend.pipeline.model_json_to_middle_json import ( + result_to_middle_json as pipeline_result_to_middle_json, +) +from mineru.backend.vlm.vlm_middle_json_mkcontent import union_make as vlm_union_make +from mineru.utils.models_download_utils import auto_download_and_get_model_root_path + + +class TestE2E: + + def test_pipeline_with_two_config(self): + def do_parse( + output_dir, # Output directory for storing parsing results + pdf_file_names: list[str], # List of PDF file names to be parsed + pdf_bytes_list: list[bytes], # List of PDF bytes to be parsed + p_lang_list: list[ + str + ], # List of languages for each PDF, default is 'ch' (Chinese) + parse_method="auto", # The method for parsing PDF, default is 'auto' + formula_enable=True, # Enable formula parsing + table_enable=True, # Enable table parsing + f_draw_layout_bbox=True, # Whether to draw layout bounding boxes + f_draw_span_bbox=True, # Whether to draw span bounding boxes + f_dump_md=True, # Whether to dump markdown files + f_dump_middle_json=True, # Whether to dump middle JSON files + f_dump_model_output=True, # Whether to dump model output files + f_dump_orig_pdf=True, # Whether to dump original PDF files + f_dump_content_list=True, # Whether to dump content list files + f_make_md_mode=MakeMode.MM_MD, # The mode for making markdown content, default is MM_MD + start_page_id=0, # Start page ID for parsing, default is 0 + end_page_id=None, # End page ID for parsing, default is None (parse all pages until the end of the document) + ): + for idx, pdf_bytes in enumerate(pdf_bytes_list): + new_pdf_bytes = convert_pdf_bytes_to_bytes_by_pypdfium2( + pdf_bytes, start_page_id, end_page_id + ) + pdf_bytes_list[idx] = new_pdf_bytes + + ( + infer_results, + all_image_lists, + all_pdf_docs, + lang_list, + ocr_enabled_list, + ) = pipeline_doc_analyze( + pdf_bytes_list, + p_lang_list, + parse_method=parse_method, + formula_enable=formula_enable, + table_enable=table_enable, + ) + + for idx, model_list in enumerate(infer_results): + model_json = copy.deepcopy(model_list) + pdf_file_name = pdf_file_names[idx] + local_image_dir, local_md_dir = prepare_env( + output_dir, pdf_file_name, parse_method + ) + image_writer, md_writer = FileBasedDataWriter( + local_image_dir + ), FileBasedDataWriter(local_md_dir) + + images_list = all_image_lists[idx] + pdf_doc = all_pdf_docs[idx] + _lang = lang_list[idx] + _ocr_enable = ocr_enabled_list[idx] + middle_json = pipeline_result_to_middle_json( + model_list, + images_list, + pdf_doc, + image_writer, + _lang, + _ocr_enable, + formula_enable, + ) + + pdf_info = middle_json["pdf_info"] + + pdf_bytes = pdf_bytes_list[idx] + if f_draw_layout_bbox: + draw_layout_bbox( + pdf_info, + pdf_bytes, + local_md_dir, + f"{pdf_file_name}_layout.pdf", + ) + + if f_draw_span_bbox: + draw_span_bbox( + pdf_info, + pdf_bytes, + local_md_dir, + f"{pdf_file_name}_span.pdf", + ) + + if f_dump_orig_pdf: + md_writer.write( + f"{pdf_file_name}_origin.pdf", + pdf_bytes, + ) + + if f_dump_md: + image_dir = str(os.path.basename(local_image_dir)) + md_content_str = pipeline_union_make( + pdf_info, f_make_md_mode, image_dir + ) + md_writer.write_string( + f"{pdf_file_name}.md", + md_content_str, + ) + + if f_dump_content_list: + image_dir = str(os.path.basename(local_image_dir)) + content_list = pipeline_union_make( + pdf_info, MakeMode.CONTENT_LIST, image_dir + ) + md_writer.write_string( + f"{pdf_file_name}_content_list.json", + json.dumps(content_list, ensure_ascii=False, indent=4), + ) + + if f_dump_middle_json: + md_writer.write_string( + f"{pdf_file_name}_middle.json", + json.dumps(middle_json, ensure_ascii=False, indent=4), + ) + + if f_dump_model_output: + md_writer.write_string( + f"{pdf_file_name}_model.json", + json.dumps(model_json, ensure_ascii=False, indent=4), + ) + + logger.info(f"local output dir is {local_md_dir}") + + def parse_doc( + path_list: list[Path], + output_dir, + lang="ch", + method="auto", + start_page_id=0, + end_page_id=None, + ): + file_name_list = [] + pdf_bytes_list = [] + lang_list = [] + for path in path_list: + file_name = str(Path(path).stem) + pdf_bytes = read_fn(path) + file_name_list.append(file_name) + pdf_bytes_list.append(pdf_bytes) + lang_list.append(lang) + # 运行两次 do_parse,分别是开启公式和表格解析和不开启 + do_parse( + output_dir=output_dir, + pdf_file_names=file_name_list, + pdf_bytes_list=pdf_bytes_list, + p_lang_list=lang_list, + parse_method=method, + start_page_id=start_page_id, + end_page_id=end_page_id, + ) + do_parse( + output_dir=output_dir, + pdf_file_names=file_name_list, + pdf_bytes_list=pdf_bytes_list, + p_lang_list=lang_list, + parse_method=method, + table_enable=False, + formula_enable=False, + start_page_id=start_page_id, + end_page_id=end_page_id, + ) + + __dir__ = os.path.dirname(os.path.abspath(__file__)) + pdf_files_dir = os.path.join(__dir__, "pdfs") + output_dir = os.path.join(__dir__, "output") + pdf_suffixes = [".pdf"] + image_suffixes = [".png", ".jpeg", ".jpg"] + + doc_path_list = [] + for doc_path in Path(pdf_files_dir).glob("*"): + if doc_path.suffix in pdf_suffixes + image_suffixes: + doc_path_list.append(doc_path) + + os.environ["MINERU_MODEL_SOURCE"] = "modelscope" + parse_doc(doc_path_list, output_dir) + + def test_vlm_transformers_with_default_config(self): + def do_parse( + output_dir, # Output directory for storing parsing results + pdf_file_names: list[str], # List of PDF file names to be parsed + pdf_bytes_list: list[bytes], # List of PDF bytes to be parsed + server_url=None, # Server URL for vlm-sglang-client backend + f_draw_layout_bbox=True, # Whether to draw layout bounding boxes + f_dump_md=True, # Whether to dump markdown files + f_dump_middle_json=True, # Whether to dump middle JSON files + f_dump_model_output=True, # Whether to dump model output files + f_dump_orig_pdf=True, # Whether to dump original PDF files + f_dump_content_list=True, # Whether to dump content list files + f_make_md_mode=MakeMode.MM_MD, # The mode for making markdown content, default is MM_MD + start_page_id=0, # Start page ID for parsing, default is 0 + end_page_id=None, # End page ID for parsing, default is None (parse all pages until the end of the document) + ): + backend = "transformers" + f_draw_span_bbox = False + parse_method = "vlm" + for idx, pdf_bytes in enumerate(pdf_bytes_list): + pdf_file_name = pdf_file_names[idx] + pdf_bytes = convert_pdf_bytes_to_bytes_by_pypdfium2( + pdf_bytes, start_page_id, end_page_id + ) + local_image_dir, local_md_dir = prepare_env( + output_dir, pdf_file_name, parse_method + ) + image_writer, md_writer = FileBasedDataWriter( + local_image_dir + ), FileBasedDataWriter(local_md_dir) + middle_json, infer_result = vlm_doc_analyze( + pdf_bytes, + image_writer=image_writer, + backend=backend, + server_url=server_url, + ) + + pdf_info = middle_json["pdf_info"] + + if f_draw_layout_bbox: + draw_layout_bbox( + pdf_info, pdf_bytes, local_md_dir, f"{pdf_file_name}_layout.pdf" + ) + + if f_draw_span_bbox: + draw_span_bbox( + pdf_info, pdf_bytes, local_md_dir, f"{pdf_file_name}_span.pdf" + ) + + if f_dump_orig_pdf: + md_writer.write( + f"{pdf_file_name}_origin.pdf", + pdf_bytes, + ) + + if f_dump_md: + image_dir = str(os.path.basename(local_image_dir)) + md_content_str = vlm_union_make(pdf_info, f_make_md_mode, image_dir) + md_writer.write_string( + f"{pdf_file_name}.md", + md_content_str, + ) + + if f_dump_content_list: + image_dir = str(os.path.basename(local_image_dir)) + content_list = vlm_union_make( + pdf_info, MakeMode.CONTENT_LIST, image_dir + ) + md_writer.write_string( + f"{pdf_file_name}_content_list.json", + json.dumps(content_list, ensure_ascii=False, indent=4), + ) + + if f_dump_middle_json: + md_writer.write_string( + f"{pdf_file_name}_middle.json", + json.dumps(middle_json, ensure_ascii=False, indent=4), + ) + + if f_dump_model_output: + model_output = ("\n" + "-" * 50 + "\n").join(infer_result) + md_writer.write_string( + f"{pdf_file_name}_model_output.txt", + model_output, + ) + + logger.info(f"local output dir is {local_md_dir}") + + def parse_doc( + path_list: list[Path], + output_dir, + lang="ch", + server_url=None, + start_page_id=0, + end_page_id=None, + ): + file_name_list = [] + pdf_bytes_list = [] + lang_list = [] + for path in path_list: + file_name = str(Path(path).stem) + pdf_bytes = read_fn(path) + file_name_list.append(file_name) + pdf_bytes_list.append(pdf_bytes) + lang_list.append(lang) + do_parse( + output_dir=output_dir, + pdf_file_names=file_name_list, + pdf_bytes_list=pdf_bytes_list, + server_url=server_url, + start_page_id=start_page_id, + end_page_id=end_page_id, + ) + + __dir__ = os.path.dirname(os.path.abspath(__file__)) + pdf_files_dir = os.path.join(__dir__, "pdfs") + output_dir = os.path.join(__dir__, "output") + pdf_suffixes = [".pdf"] + image_suffixes = [".png", ".jpeg", ".jpg"] + + doc_path_list = [] + for doc_path in Path(pdf_files_dir).glob("*"): + if doc_path.suffix in pdf_suffixes + image_suffixes: + doc_path_list.append(doc_path) + + os.environ["MINERU_MODEL_SOURCE"] = "modelscope" + parse_doc(doc_path_list, output_dir) diff --git a/tests/unittest/test_integrations/test_rag/assets/middle.json b/tests/unittest/test_integrations/test_rag/assets/middle.json deleted file mode 100644 index 44d3e06c..00000000 --- a/tests/unittest/test_integrations/test_rag/assets/middle.json +++ /dev/null @@ -1,2302 +0,0 @@ -{ - "pdf_info": [ - { - "preproc_blocks": [ - { - "type": "text", - "bbox": [ - 47, - 57, - 299, - 93 - ], - "lines": [ - { - "bbox": [ - 47, - 57, - 299, - 68 - ], - "spans": [ - { - "bbox": [ - 49, - 57, - 298, - 68 - ], - "score": 0.98, - "content": "of the synthetic stereo scene from a single camera perspective", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 71, - 299, - 80 - ], - "spans": [ - { - "bbox": [ - 49, - 71, - 299, - 80 - ], - "score": 0.96, - "content": "along with the ground truth disparity,occlusion map,and", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 82, - 123, - 93 - ], - "spans": [ - { - "bbox": [ - 49, - 82, - 123, - 93 - ], - "score": 0.99, - "content": "discontinuitymap.", - "type": "text" - } - ] - } - ] - }, - { - "type": "image", - "bbox": [ - 47, - 100, - 301, - 535 - ], - "blocks": [ - { - "bbox": [ - 51, - 100, - 292, - 484 - ], - "type": "image_body", - "lines": [ - { - "bbox": [ - 51, - 100, - 292, - 484 - ], - "spans": [ - { - "bbox": [ - 51, - 100, - 292, - 484 - ], - "score": 0.9999815225601196, - "type": "image", - "image_path": "b07d74524eac6f46b5505b48b1e10db23f2b45cb2d21d5fec72e967e61255811.jpg" - } - ] - } - ] - }, - { - "bbox": [ - 47, - 488, - 301, - 535 - ], - "type": "image_caption", - "lines": [ - { - "bbox": [ - 49, - 490, - 299, - 499 - ], - "spans": [ - { - "bbox": [ - 49, - 490, - 299, - 499 - ], - "score": 1.0, - "content": "Figure2:Twosampleframesfromthesyntheticvideose-", - "type": "text" - } - ] - }, - { - "bbox": [ - 48, - 501, - 300, - 512 - ], - "spans": [ - { - "bbox": [ - 48, - 501, - 300, - 512 - ], - "score": 1.0, - "content": "quence (1st row), along with their corresponding ground truth", - "type": "text" - } - ] - }, - { - "bbox": [ - 48, - 513, - 299, - 523 - ], - "spans": [ - { - "bbox": [ - 48, - 513, - 299, - 523 - ], - "score": 0.98, - "content": "disparity (2nd row), occlusion map (3rd row), and discontinuity", - "type": "text" - } - ] - }, - { - "bbox": [ - 48, - 525, - 110, - 535 - ], - "spans": [ - { - "bbox": [ - 48, - 525, - 110, - 535 - ], - "score": 0.99, - "content": "map (4th row).", - "type": "text" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "bbox": [ - 47, - 549, - 299, - 678 - ], - "lines": [ - { - "bbox": [ - 58, - 549, - 299, - 558 - ], - "spans": [ - { - "bbox": [ - 58, - 549, - 298, - 558 - ], - "score": 0.98, - "content": "Theresultsof temporalstereomatching aregiveninFigure", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 561, - 299, - 570 - ], - "spans": [ - { - "bbox": [ - 47, - 561, - 298, - 570 - ], - "score": 0.98, - "content": "3foruniformadditivenoiseconfinedtotherangesof±O", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 573, - 299, - 582 - ], - "spans": [ - { - "bbox": [ - 49, - 573, - 299, - 582 - ], - "score": 0.96, - "content": "±20, and ±40. Each performance plot is given as a function", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 585, - 299, - 594 - ], - "spans": [ - { - "bbox": [ - 48, - 585, - 299, - 594 - ], - "score": 0.95, - "content": "of the feedback coefficient X. As with the majority of temporal", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 597, - 299, - 606 - ], - "spans": [ - { - "bbox": [ - 49, - 597, - 299, - 606 - ], - "score": 0.99, - "content": "stereomatching methods,improvements are negligible when", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 609, - 299, - 618 - ], - "spans": [ - { - "bbox": [ - 48, - 609, - 299, - 618 - ], - "score": 0.97, - "content": "no noise is added to the images [1o], [19]. This is largely due", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 621, - 299, - 629 - ], - "spans": [ - { - "bbox": [ - 48, - 621, - 299, - 629 - ], - "score": 1.0, - "content": "tothefactthatthevideousedtoevaluatethesemethodsis", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 633, - 299, - 641 - ], - "spans": [ - { - "bbox": [ - 48, - 633, - 299, - 641 - ], - "score": 1.0, - "content": "computergeneratedwithverylittlenoisetostartwith,thus", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 644, - 299, - 654 - ], - "spans": [ - { - "bbox": [ - 48, - 644, - 299, - 654 - ], - "score": 0.98, - "content": "the noise suppression achieved with temporal stereo matching", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 657, - 299, - 666 - ], - "spans": [ - { - "bbox": [ - 48, - 657, - 299, - 666 - ], - "score": 0.98, - "content": "showslittletonoimprovementovermethodsthatoperate on", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 669, - 113, - 678 - ], - "spans": [ - { - "bbox": [ - 48, - 669, - 113, - 678 - ], - "score": 1.0, - "content": "pairsofimages.", - "type": "text" - } - ] - } - ] - }, - { - "type": "text", - "bbox": [ - 47, - 680, - 299, - 725 - ], - "lines": [ - { - "bbox": [ - 58, - 680, - 299, - 690 - ], - "spans": [ - { - "bbox": [ - 59, - 680, - 298, - 690 - ], - "score": 0.97, - "content": "Significantimprovementsin accuracy canbeseenin Figure", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 692, - 299, - 701 - ], - "spans": [ - { - "bbox": [ - 48, - 692, - 298, - 701 - ], - "score": 0.97, - "content": "3 when the noise has ranges of ±20, and ±40.In this scenario", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 703, - 299, - 714 - ], - "spans": [ - { - "bbox": [ - 48, - 703, - 299, - 714 - ], - "score": 0.98, - "content": "the effect of noise in the current frame is reduced by increasing", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 716, - 299, - 725 - ], - "spans": [ - { - "bbox": [ - 48, - 716, - 299, - 725 - ], - "score": 0.96, - "content": "thefeedbackcoefficientX.Thisincreasing ofXhas theeffect", - "type": "text" - } - ] - } - ] - }, - { - "type": "image", - "bbox": [ - 310, - 55, - 564, - 371 - ], - "blocks": [ - { - "bbox": [ - 314, - 55, - 538, - 305 - ], - "type": "image_body", - "lines": [ - { - "bbox": [ - 314, - 55, - 538, - 305 - ], - "spans": [ - { - "bbox": [ - 314, - 55, - 538, - 305 - ], - "score": 0.9999905824661255, - "type": "image", - "image_path": "c7539af438972442d0f86aa46409e6684338ddfd1fbfd6bdacf02220853ccb55.jpg" - } - ] - } - ] - }, - { - "bbox": [ - 310, - 311, - 564, - 371 - ], - "type": "image_caption", - "lines": [ - { - "bbox": [ - 312, - 313, - 562, - 322 - ], - "spans": [ - { - "bbox": [ - 312, - 313, - 562, - 322 - ], - "score": 0.97, - "content": "Figure 3: Performance of temporal matching at different levels", - "type": "text" - } - ] - }, - { - "bbox": [ - 312, - 325, - 561, - 334 - ], - "spans": [ - { - "bbox": [ - 312, - 325, - 561, - 334 - ], - "score": 0.98, - "content": "of uniformly distributed image noise{±0,±20,±40}.Mean", - "type": "text" - } - ] - }, - { - "bbox": [ - 311, - 336, - 563, - 347 - ], - "spans": [ - { - "bbox": [ - 311, - 336, - 563, - 347 - ], - "score": 0.99, - "content": "squared error (MSE) of disparities is plotted versus the values", - "type": "text" - } - ] - }, - { - "bbox": [ - 311, - 348, - 561, - 358 - ], - "spans": [ - { - "bbox": [ - 311, - 348, - 561, - 358 - ], - "score": 0.96, - "content": "of the feedback coefficient X. Dashed lines correspond to the", - "type": "text" - } - ] - }, - { - "bbox": [ - 311, - 360, - 535, - 371 - ], - "spans": [ - { - "bbox": [ - 311, - 360, - 535, - 371 - ], - "score": 0.96, - "content": "values of MSE obtained without temporal aggregation.", - "type": "text" - } - ] - } - ] - } - ] - }, - { - "type": "image", - "bbox": [ - 310, - 418, - 563, - 666 - ], - "blocks": [ - { - "bbox": [ - 314, - 418, - 549, - 623 - ], - "type": "image_body", - "lines": [ - { - "bbox": [ - 314, - 418, - 549, - 623 - ], - "spans": [ - { - "bbox": [ - 314, - 418, - 549, - 623 - ], - "score": 0.9999067783355713, - "type": "image", - "image_path": "9ac4db9197801de4a20dbc9ea17bc0c53afb7290dc8b5b45d9e92e830566cb14.jpg" - } - ] - } - ] - }, - { - "bbox": [ - 310, - 630, - 563, - 666 - ], - "type": "image_caption", - "lines": [ - { - "bbox": [ - 312, - 631, - 562, - 641 - ], - "spans": [ - { - "bbox": [ - 312, - 631, - 562, - 641 - ], - "score": 0.94, - "content": "Figure 4:Optimal values of the feedback coefficient \\ cor-", - "type": "text" - } - ] - }, - { - "bbox": [ - 312, - 644, - 561, - 652 - ], - "spans": [ - { - "bbox": [ - 312, - 644, - 561, - 652 - ], - "score": 0.97, - "content": "responding to the smallest mean squared error (MSE)of the", - "type": "text" - } - ] - }, - { - "bbox": [ - 312, - 655, - 513, - 665 - ], - "spans": [ - { - "bbox": [ - 312, - 655, - 513, - 665 - ], - "score": 0.97, - "content": "disparity estimates for a range of noise strengths.", - "type": "text" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "bbox": [ - 311, - 692, - 563, - 725 - ], - "lines": [ - { - "bbox": [ - 311, - 692, - 563, - 702 - ], - "spans": [ - { - "bbox": [ - 311, - 692, - 562, - 702 - ], - "score": 0.95, - "content": "of averaging out noise in the per-pixel costs by selecting", - "type": "text" - } - ] - }, - { - "bbox": [ - 311, - 704, - 563, - 713 - ], - "spans": [ - { - "bbox": [ - 311, - 704, - 562, - 713 - ], - "score": 0.98, - "content": "matches based more heavily upon the auxiliary cost, which", - "type": "text" - } - ] - }, - { - "bbox": [ - 311, - 716, - 563, - 725 - ], - "spans": [ - { - "bbox": [ - 311, - 716, - 563, - 725 - ], - "score": 0.97, - "content": "is essentially a much more stable running average of the cost", - "type": "text" - } - ] - } - ] - } - ], - "layout_bboxes": [ - { - "layout_bbox": [ - 47, - 55, - 301, - 726 - ], - "layout_label": "V", - "sub_layout": [] - }, - { - "layout_bbox": [ - 310, - 55, - 564, - 726 - ], - "layout_label": "V", - "sub_layout": [] - } - ], - "page_idx": 0, - "page_size": [ - 612.0, - 792.0 - ], - "_layout_tree": [ - { - "layout_bbox": [ - 0, - 55, - 612.0, - 726 - ], - "layout_label": "V", - "sub_layout": [ - { - "layout_bbox": [ - 47, - 55, - 564, - 726 - ], - "layout_label": "H", - "sub_layout": [ - { - "layout_bbox": [ - 47, - 55, - 301, - 726 - ], - "layout_label": "V", - "sub_layout": [] - }, - { - "layout_bbox": [ - 310, - 55, - 564, - 726 - ], - "layout_label": "V", - "sub_layout": [] - } - ] - } - ] - } - ], - "images": [ - { - "type": "image", - "bbox": [ - 47, - 100, - 301, - 535 - ], - "blocks": [ - { - "bbox": [ - 51, - 100, - 292, - 484 - ], - "type": "image_body", - "lines": [ - { - "bbox": [ - 51, - 100, - 292, - 484 - ], - "spans": [ - { - "bbox": [ - 51, - 100, - 292, - 484 - ], - "score": 0.9999815225601196, - "type": "image", - "image_path": "b07d74524eac6f46b5505b48b1e10db23f2b45cb2d21d5fec72e967e61255811.jpg" - } - ] - } - ] - }, - { - "bbox": [ - 47, - 488, - 301, - 535 - ], - "type": "image_caption", - "lines": [ - { - "bbox": [ - 49, - 490, - 299, - 499 - ], - "spans": [ - { - "bbox": [ - 49, - 490, - 299, - 499 - ], - "score": 1.0, - "content": "Figure2:Twosampleframesfromthesyntheticvideose-", - "type": "text" - } - ] - }, - { - "bbox": [ - 48, - 501, - 300, - 512 - ], - "spans": [ - { - "bbox": [ - 48, - 501, - 300, - 512 - ], - "score": 1.0, - "content": "quence (1st row), along with their corresponding ground truth", - "type": "text" - } - ] - }, - { - "bbox": [ - 48, - 513, - 299, - 523 - ], - "spans": [ - { - "bbox": [ - 48, - 513, - 299, - 523 - ], - "score": 0.98, - "content": "disparity (2nd row), occlusion map (3rd row), and discontinuity", - "type": "text" - } - ] - }, - { - "bbox": [ - 48, - 525, - 110, - 535 - ], - "spans": [ - { - "bbox": [ - 48, - 525, - 110, - 535 - ], - "score": 0.99, - "content": "map (4th row).", - "type": "text" - } - ] - } - ] - } - ] - }, - { - "type": "image", - "bbox": [ - 310, - 55, - 564, - 371 - ], - "blocks": [ - { - "bbox": [ - 314, - 55, - 538, - 305 - ], - "type": "image_body", - "lines": [ - { - "bbox": [ - 314, - 55, - 538, - 305 - ], - "spans": [ - { - "bbox": [ - 314, - 55, - 538, - 305 - ], - "score": 0.9999905824661255, - "type": "image", - "image_path": "c7539af438972442d0f86aa46409e6684338ddfd1fbfd6bdacf02220853ccb55.jpg" - } - ] - } - ] - }, - { - "bbox": [ - 310, - 311, - 564, - 371 - ], - "type": "image_caption", - "lines": [ - { - "bbox": [ - 312, - 313, - 562, - 322 - ], - "spans": [ - { - "bbox": [ - 312, - 313, - 562, - 322 - ], - "score": 0.97, - "content": "Figure 3: Performance of temporal matching at different levels", - "type": "text" - } - ] - }, - { - "bbox": [ - 312, - 325, - 561, - 334 - ], - "spans": [ - { - "bbox": [ - 312, - 325, - 561, - 334 - ], - "score": 0.98, - "content": "of uniformly distributed image noise{±0,±20,±40}.Mean", - "type": "text" - } - ] - }, - { - "bbox": [ - 311, - 336, - 563, - 347 - ], - "spans": [ - { - "bbox": [ - 311, - 336, - 563, - 347 - ], - "score": 0.99, - "content": "squared error (MSE) of disparities is plotted versus the values", - "type": "text" - } - ] - }, - { - "bbox": [ - 311, - 348, - 561, - 358 - ], - "spans": [ - { - "bbox": [ - 311, - 348, - 561, - 358 - ], - "score": 0.96, - "content": "of the feedback coefficient X. Dashed lines correspond to the", - "type": "text" - } - ] - }, - { - "bbox": [ - 311, - 360, - 535, - 371 - ], - "spans": [ - { - "bbox": [ - 311, - 360, - 535, - 371 - ], - "score": 0.96, - "content": "values of MSE obtained without temporal aggregation.", - "type": "text" - } - ] - } - ] - } - ] - }, - { - "type": "image", - "bbox": [ - 310, - 418, - 563, - 666 - ], - "blocks": [ - { - "bbox": [ - 314, - 418, - 549, - 623 - ], - "type": "image_body", - "lines": [ - { - "bbox": [ - 314, - 418, - 549, - 623 - ], - "spans": [ - { - "bbox": [ - 314, - 418, - 549, - 623 - ], - "score": 0.9999067783355713, - "type": "image", - "image_path": "9ac4db9197801de4a20dbc9ea17bc0c53afb7290dc8b5b45d9e92e830566cb14.jpg" - } - ] - } - ] - }, - { - "bbox": [ - 310, - 630, - 563, - 666 - ], - "type": "image_caption", - "lines": [ - { - "bbox": [ - 312, - 631, - 562, - 641 - ], - "spans": [ - { - "bbox": [ - 312, - 631, - 562, - 641 - ], - "score": 0.94, - "content": "Figure 4:Optimal values of the feedback coefficient \\ cor-", - "type": "text" - } - ] - }, - { - "bbox": [ - 312, - 644, - 561, - 652 - ], - "spans": [ - { - "bbox": [ - 312, - 644, - 561, - 652 - ], - "score": 0.97, - "content": "responding to the smallest mean squared error (MSE)of the", - "type": "text" - } - ] - }, - { - "bbox": [ - 312, - 655, - 513, - 665 - ], - "spans": [ - { - "bbox": [ - 312, - 655, - 513, - 665 - ], - "score": 0.97, - "content": "disparity estimates for a range of noise strengths.", - "type": "text" - } - ] - } - ] - } - ] - } - ], - "tables": [], - "interline_equations": [], - "discarded_blocks": [], - "need_drop": false, - "drop_reason": [], - "para_blocks": [ - { - "type": "text", - "bbox": [ - 47, - 57, - 299, - 93 - ], - "lines": [ - { - "bbox": [ - 47, - 57, - 299, - 68 - ], - "spans": [ - { - "bbox": [ - 49, - 57, - 298, - 68 - ], - "score": 0.98, - "content": "of the synthetic stereo scene from a single camera perspective", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 71, - 299, - 80 - ], - "spans": [ - { - "bbox": [ - 49, - 71, - 299, - 80 - ], - "score": 0.96, - "content": "along with the ground truth disparity,occlusion map,and", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 82, - 123, - 93 - ], - "spans": [ - { - "bbox": [ - 49, - 82, - 123, - 93 - ], - "score": 0.99, - "content": "discontinuitymap.", - "type": "text" - } - ] - } - ] - }, - { - "type": "image", - "bbox": [ - 47, - 100, - 301, - 535 - ], - "blocks": [ - { - "bbox": [ - 51, - 100, - 292, - 484 - ], - "type": "image_body", - "lines": [ - { - "bbox": [ - 51, - 100, - 292, - 484 - ], - "spans": [ - { - "bbox": [ - 51, - 100, - 292, - 484 - ], - "score": 0.9999815225601196, - "type": "image", - "image_path": "b07d74524eac6f46b5505b48b1e10db23f2b45cb2d21d5fec72e967e61255811.jpg" - } - ] - } - ] - }, - { - "bbox": [ - 47, - 488, - 301, - 535 - ], - "type": "image_caption", - "lines": [ - { - "bbox": [ - 49, - 490, - 299, - 499 - ], - "spans": [ - { - "bbox": [ - 49, - 490, - 299, - 499 - ], - "score": 1.0, - "content": "Figure2:Twosampleframesfromthesyntheticvideose-", - "type": "text" - } - ] - }, - { - "bbox": [ - 48, - 501, - 300, - 512 - ], - "spans": [ - { - "bbox": [ - 48, - 501, - 300, - 512 - ], - "score": 1.0, - "content": "quence (1st row), along with their corresponding ground truth", - "type": "text" - } - ] - }, - { - "bbox": [ - 48, - 513, - 299, - 523 - ], - "spans": [ - { - "bbox": [ - 48, - 513, - 299, - 523 - ], - "score": 0.98, - "content": "disparity (2nd row), occlusion map (3rd row), and discontinuity", - "type": "text" - } - ] - }, - { - "bbox": [ - 48, - 525, - 110, - 535 - ], - "spans": [ - { - "bbox": [ - 48, - 525, - 110, - 535 - ], - "score": 0.99, - "content": "map (4th row).", - "type": "text" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "bbox": [ - 47, - 549, - 299, - 678 - ], - "lines": [ - { - "bbox": [ - 58, - 549, - 299, - 558 - ], - "spans": [ - { - "bbox": [ - 58, - 549, - 298, - 558 - ], - "score": 0.98, - "content": "Theresultsof temporalstereomatching aregiveninFigure", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 561, - 299, - 570 - ], - "spans": [ - { - "bbox": [ - 47, - 561, - 298, - 570 - ], - "score": 0.98, - "content": "3foruniformadditivenoiseconfinedtotherangesof±O", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 573, - 299, - 582 - ], - "spans": [ - { - "bbox": [ - 49, - 573, - 299, - 582 - ], - "score": 0.96, - "content": "±20, and ±40. Each performance plot is given as a function", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 585, - 299, - 594 - ], - "spans": [ - { - "bbox": [ - 48, - 585, - 299, - 594 - ], - "score": 0.95, - "content": "of the feedback coefficient X. As with the majority of temporal", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 597, - 299, - 606 - ], - "spans": [ - { - "bbox": [ - 49, - 597, - 299, - 606 - ], - "score": 0.99, - "content": "stereomatching methods,improvements are negligible when", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 609, - 299, - 618 - ], - "spans": [ - { - "bbox": [ - 48, - 609, - 299, - 618 - ], - "score": 0.97, - "content": "no noise is added to the images [1o], [19]. This is largely due", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 621, - 299, - 629 - ], - "spans": [ - { - "bbox": [ - 48, - 621, - 299, - 629 - ], - "score": 1.0, - "content": "tothefactthatthevideousedtoevaluatethesemethodsis", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 633, - 299, - 641 - ], - "spans": [ - { - "bbox": [ - 48, - 633, - 299, - 641 - ], - "score": 1.0, - "content": "computergeneratedwithverylittlenoisetostartwith,thus", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 644, - 299, - 654 - ], - "spans": [ - { - "bbox": [ - 48, - 644, - 299, - 654 - ], - "score": 0.98, - "content": "the noise suppression achieved with temporal stereo matching", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 657, - 299, - 666 - ], - "spans": [ - { - "bbox": [ - 48, - 657, - 299, - 666 - ], - "score": 0.98, - "content": "showslittletonoimprovementovermethodsthatoperate on", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 669, - 113, - 678 - ], - "spans": [ - { - "bbox": [ - 48, - 669, - 113, - 678 - ], - "score": 1.0, - "content": "pairsofimages.", - "type": "text" - } - ] - } - ] - }, - { - "type": "text", - "bbox": [ - 47, - 680, - 299, - 725 - ], - "lines": [ - { - "bbox": [ - 58, - 680, - 299, - 690 - ], - "spans": [ - { - "bbox": [ - 59, - 680, - 298, - 690 - ], - "score": 0.97, - "content": "Significantimprovementsin accuracy canbeseenin Figure", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 692, - 299, - 701 - ], - "spans": [ - { - "bbox": [ - 48, - 692, - 298, - 701 - ], - "score": 0.97, - "content": "3 when the noise has ranges of ±20, and ±40.In this scenario", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 703, - 299, - 714 - ], - "spans": [ - { - "bbox": [ - 48, - 703, - 299, - 714 - ], - "score": 0.98, - "content": "the effect of noise in the current frame is reduced by increasing", - "type": "text" - } - ] - }, - { - "bbox": [ - 47, - 716, - 299, - 725 - ], - "spans": [ - { - "bbox": [ - 48, - 716, - 299, - 725 - ], - "score": 0.96, - "content": "thefeedbackcoefficientX.Thisincreasing ofXhas theeffect", - "type": "text" - } - ] - } - ] - }, - { - "type": "image", - "bbox": [ - 310, - 55, - 564, - 371 - ], - "blocks": [ - { - "bbox": [ - 314, - 55, - 538, - 305 - ], - "type": "image_body", - "lines": [ - { - "bbox": [ - 314, - 55, - 538, - 305 - ], - "spans": [ - { - "bbox": [ - 314, - 55, - 538, - 305 - ], - "score": 0.9999905824661255, - "type": "image", - "image_path": "c7539af438972442d0f86aa46409e6684338ddfd1fbfd6bdacf02220853ccb55.jpg" - } - ] - } - ] - }, - { - "bbox": [ - 310, - 311, - 564, - 371 - ], - "type": "image_caption", - "lines": [ - { - "bbox": [ - 312, - 313, - 562, - 322 - ], - "spans": [ - { - "bbox": [ - 312, - 313, - 562, - 322 - ], - "score": 0.97, - "content": "Figure 3: Performance of temporal matching at different levels", - "type": "text" - } - ] - }, - { - "bbox": [ - 312, - 325, - 561, - 334 - ], - "spans": [ - { - "bbox": [ - 312, - 325, - 561, - 334 - ], - "score": 0.98, - "content": "of uniformly distributed image noise{±0,±20,±40}.Mean", - "type": "text" - } - ] - }, - { - "bbox": [ - 311, - 336, - 563, - 347 - ], - "spans": [ - { - "bbox": [ - 311, - 336, - 563, - 347 - ], - "score": 0.99, - "content": "squared error (MSE) of disparities is plotted versus the values", - "type": "text" - } - ] - }, - { - "bbox": [ - 311, - 348, - 561, - 358 - ], - "spans": [ - { - "bbox": [ - 311, - 348, - 561, - 358 - ], - "score": 0.96, - "content": "of the feedback coefficient X. Dashed lines correspond to the", - "type": "text" - } - ] - }, - { - "bbox": [ - 311, - 360, - 535, - 371 - ], - "spans": [ - { - "bbox": [ - 311, - 360, - 535, - 371 - ], - "score": 0.96, - "content": "values of MSE obtained without temporal aggregation.", - "type": "text" - } - ] - } - ] - } - ] - }, - { - "type": "image", - "bbox": [ - 310, - 418, - 563, - 666 - ], - "blocks": [ - { - "bbox": [ - 314, - 418, - 549, - 623 - ], - "type": "image_body", - "lines": [ - { - "bbox": [ - 314, - 418, - 549, - 623 - ], - "spans": [ - { - "bbox": [ - 314, - 418, - 549, - 623 - ], - "score": 0.9999067783355713, - "type": "image", - "image_path": "9ac4db9197801de4a20dbc9ea17bc0c53afb7290dc8b5b45d9e92e830566cb14.jpg" - } - ] - } - ] - }, - { - "bbox": [ - 310, - 630, - 563, - 666 - ], - "type": "image_caption", - "lines": [ - { - "bbox": [ - 312, - 631, - 562, - 641 - ], - "spans": [ - { - "bbox": [ - 312, - 631, - 562, - 641 - ], - "score": 0.94, - "content": "Figure 4:Optimal values of the feedback coefficient \\ cor-", - "type": "text" - } - ] - }, - { - "bbox": [ - 312, - 644, - 561, - 652 - ], - "spans": [ - { - "bbox": [ - 312, - 644, - 561, - 652 - ], - "score": 0.97, - "content": "responding to the smallest mean squared error (MSE)of the", - "type": "text" - } - ] - }, - { - "bbox": [ - 312, - 655, - 513, - 665 - ], - "spans": [ - { - "bbox": [ - 312, - 655, - 513, - 665 - ], - "score": 0.97, - "content": "disparity estimates for a range of noise strengths.", - "type": "text" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "bbox": [ - 311, - 692, - 563, - 725 - ], - "lines": [ - { - "bbox": [ - 311, - 692, - 563, - 702 - ], - "spans": [ - { - "bbox": [ - 311, - 692, - 562, - 702 - ], - "score": 0.95, - "content": "of averaging out noise in the per-pixel costs by selecting", - "type": "text" - } - ] - }, - { - "bbox": [ - 311, - 704, - 563, - 713 - ], - "spans": [ - { - "bbox": [ - 311, - 704, - 562, - 713 - ], - "score": 0.98, - "content": "matches based more heavily upon the auxiliary cost, which", - "type": "text" - } - ] - }, - { - "bbox": [ - 311, - 716, - 563, - 725 - ], - "spans": [ - { - "bbox": [ - 311, - 716, - 563, - 725 - ], - "score": 0.97, - "content": "is essentially a much more stable running average of the cost", - "type": "text" - } - ] - } - ] - } - ] - } - ], - "_parse_type": "ocr", - "_version_name": "0.7.0b1" -} diff --git a/tests/unittest/test_integrations/test_rag/assets/one_page_with_table_image.2.pdf b/tests/unittest/test_integrations/test_rag/assets/one_page_with_table_image.2.pdf deleted file mode 100644 index b1366208..00000000 Binary files a/tests/unittest/test_integrations/test_rag/assets/one_page_with_table_image.2.pdf and /dev/null differ diff --git a/tests/unittest/test_integrations/test_rag/test_api.py b/tests/unittest/test_integrations/test_rag/test_api.py deleted file mode 100644 index f4328405..00000000 --- a/tests/unittest/test_integrations/test_rag/test_api.py +++ /dev/null @@ -1,55 +0,0 @@ -import json -import os -import shutil -import tempfile - -from magic_pdf.integrations.rag.api import DataReader, RagDocumentReader -from magic_pdf.integrations.rag.type import CategoryType -from magic_pdf.integrations.rag.utils import \ - convert_middle_json_to_layout_elements - - -def test_rag_document_reader(): - # setup - unitest_dir = '/tmp/magic_pdf/unittest/integrations/rag' - os.makedirs(unitest_dir, exist_ok=True) - temp_output_dir = tempfile.mkdtemp(dir=unitest_dir) - os.makedirs(temp_output_dir, exist_ok=True) - - # test - with open('tests/unittest/test_integrations/test_rag/assets/middle.json') as f: - json_data = json.load(f) - res = convert_middle_json_to_layout_elements(json_data, temp_output_dir) - - doc = RagDocumentReader(res) - assert len(list(iter(doc))) == 1 - - page = list(iter(doc))[0] - assert len(list(iter(page))) >= 10 - assert len(page.get_rel_map()) >= 3 - - item = list(iter(page))[0] - assert item.category_type == CategoryType.text - - # teardown - shutil.rmtree(temp_output_dir) - - -def test_data_reader(): - # setup - unitest_dir = '/tmp/magic_pdf/unittest/integrations/rag' - os.makedirs(unitest_dir, exist_ok=True) - temp_output_dir = tempfile.mkdtemp(dir=unitest_dir) - os.makedirs(temp_output_dir, exist_ok=True) - - # test - data_reader = DataReader('tests/unittest/test_integrations/test_rag/assets', 'ocr', - temp_output_dir) - - assert data_reader.get_documents_count() == 2 - for idx in range(data_reader.get_documents_count()): - document = data_reader.get_document_result(idx) - assert document is not None - - # teardown - shutil.rmtree(temp_output_dir) diff --git a/tests/unittest/test_integrations/test_rag/test_utils.py b/tests/unittest/test_integrations/test_rag/test_utils.py deleted file mode 100644 index 7914f7dd..00000000 --- a/tests/unittest/test_integrations/test_rag/test_utils.py +++ /dev/null @@ -1,57 +0,0 @@ -import json -import os -import shutil -import tempfile - -from magic_pdf.integrations.rag.type import CategoryType -from magic_pdf.integrations.rag.utils import ( - convert_middle_json_to_layout_elements, inference) - - -def test_convert_middle_json_to_layout_elements(): - # setup - unitest_dir = '/tmp/magic_pdf/unittest/integrations/rag' - os.makedirs(unitest_dir, exist_ok=True) - temp_output_dir = tempfile.mkdtemp(dir=unitest_dir) - os.makedirs(temp_output_dir, exist_ok=True) - - # test - with open('tests/unittest/test_integrations/test_rag/assets/middle.json') as f: - json_data = json.load(f) - res = convert_middle_json_to_layout_elements(json_data, temp_output_dir) - - assert len(res) == 1 - assert len(res[0].layout_dets) > 0 - assert res[0].layout_dets[0].anno_id == 0 - assert res[0].layout_dets[0].category_type == CategoryType.text - assert len(res[0].extra.element_relation) >= 2 - - # teardown - shutil.rmtree(temp_output_dir) - - -def test_inference(): - - asset_dir = 'tests/unittest/test_integrations/test_rag/assets' - # setup - unitest_dir = '/tmp/magic_pdf/unittest/integrations/rag' - os.makedirs(unitest_dir, exist_ok=True) - temp_output_dir = tempfile.mkdtemp(dir=unitest_dir) - os.makedirs(temp_output_dir, exist_ok=True) - - # test - res = inference( - asset_dir + '/one_page_with_table_image.pdf', - temp_output_dir, - 'ocr', - ) - - assert res is not None - assert len(res) == 1 - assert len(res[0].layout_dets) > 0 - assert res[0].layout_dets[0].anno_id == 0 - assert res[0].layout_dets[0].category_type == CategoryType.text - assert len(res[0].extra.element_relation) >= 2 - - # teardown - shutil.rmtree(temp_output_dir) diff --git a/tests/unittest/test_metascan_classify/test_classify.py.bak b/tests/unittest/test_metascan_classify/test_classify.py.bak deleted file mode 100644 index 6834fe70..00000000 --- a/tests/unittest/test_metascan_classify/test_classify.py.bak +++ /dev/null @@ -1,140 +0,0 @@ -import os - -import pytest - -from magic_pdf.filter.pdf_classify_by_type import classify_by_area, classify_by_text_len, classify_by_avg_words, \ - classify_by_img_num, classify_by_text_layout, classify_by_img_narrow_strips -from magic_pdf.filter.pdf_meta_scan import get_pdf_page_size_pts, get_pdf_textlen_per_page, get_imgs_per_page -from test_commons import get_docs_from_test_pdf, get_test_json_data - -# 获取当前目录 -current_directory = os.path.dirname(os.path.abspath(__file__)) - -''' -根据图片尺寸占页面面积的比例,判断是否为扫描版 -''' -@pytest.mark.parametrize("book_name, expected_bool_classify_by_area", - [ - ("the_eye/the_eye_cdn_00391653", True), # 特殊文字版1.每页存储所有图片,特点是图片占页面比例不大,每页展示可能为0也可能不止1张 - ("scihub/scihub_08400000/libgen.scimag08489000-08489999.zip_10.1016/0370-1573(90)90070-i", False), # 特殊扫描版2,每页存储的扫描页图片数量递增,特点是图占比大,每页展示1张 - ("zlib/zlib_17216416", False), # 特殊扫描版3,有的页面是一整张大图,有的页面是通过一条条小图拼起来的,检测图片占比之前需要先按规则把小图拼成大图 - ("the_eye/the_eye_wtl_00023799", False), # 特殊扫描版4,每一页都是一张张小图拼出来的,检测图片占比之前需要先按规则把小图拼成大图 - ("the_eye/the_eye_cdn_00328381", False), # 特殊扫描版5,每一页都是一张张小图拼出来的,存在多个小图多次重复使用情况,检测图片占比之前需要先按规则把小图拼成大图 - ("scihub/scihub_25800000/libgen.scimag25889000-25889999.zip_10.2307/4153991", False), # 特殊扫描版6,只有三页,其中两页是扫描版 - ("scanned_detection/llm-raw-scihub-o.O-0584-8539%2891%2980165-f", False), # 特殊扫描版7,只有一页且由小图拼成大图 - ("scanned_detection/llm-raw-scihub-o.O-bf01427123", False), # 特殊扫描版8,只有3页且全是大图扫描版 - ("scihub/scihub_41200000/libgen.scimag41253000-41253999.zip_10.1080/00222938709460256", False), # 特殊扫描版12,头两页文字版且有一页没图片,后面扫描版11页 - ("scihub/scihub_37000000/libgen.scimag37068000-37068999.zip_10.1080/0015587X.1936.9718622", False) # 特殊扫描版13,头两页文字版且有一页没图片,后面扫描版3页 - ]) -def test_classify_by_area(book_name, expected_bool_classify_by_area): - test_data = get_test_json_data(current_directory, "test_metascan_classify_data.json") - docs = get_docs_from_test_pdf(book_name) - median_width, median_height = get_pdf_page_size_pts(docs) - page_width = int(median_width) - page_height = int(median_height) - img_sz_list = test_data[book_name]["expected_image_info"] - total_page = len(docs) - text_len_list = get_pdf_textlen_per_page(docs) - bool_classify_by_area = classify_by_area(total_page, page_width, page_height, img_sz_list, text_len_list) - # assert bool_classify_by_area == expected_bool_classify_by_area - - -''' -广义上的文字版检测,任何一页大于100字,都认为为文字版 -''' -@pytest.mark.parametrize("book_name, expected_bool_classify_by_text_len", - [ - ("scihub/scihub_67200000/libgen.scimag67237000-67237999.zip_10.1515/crpm-2017-0020", True), # 文字版,少于50页 - ("scihub/scihub_83300000/libgen.scimag83306000-83306999.zip_10.1007/978-3-658-30153-8", True), # 文字版,多于50页 - ("zhongwenzaixian/zhongwenzaixian_65771414", False), # 完全无字的宣传册 - ]) -def test_classify_by_text_len(book_name, expected_bool_classify_by_text_len): - docs = get_docs_from_test_pdf(book_name) - text_len_list = get_pdf_textlen_per_page(docs) - total_page = len(docs) - bool_classify_by_text_len = classify_by_text_len(text_len_list, total_page) - # assert bool_classify_by_text_len == expected_bool_classify_by_text_len - - -''' -狭义上的文字版检测,需要平均每页字数大于200字 -''' -@pytest.mark.parametrize("book_name, expected_bool_classify_by_avg_words", - [ - ("zlib/zlib_21207669", False), # 扫描版,书末尾几页有大纲文字 - ("zlib/zlib_19012845", False), # 扫描版,好几本扫描书的集合,每本书末尾有一页文字页 - ("scihub/scihub_67200000/libgen.scimag67237000-67237999.zip_10.1515/crpm-2017-0020", True),# 正常文字版 - ("zhongwenzaixian/zhongwenzaixian_65771414", False), # 宣传册 - ("zhongwenzaixian/zhongwenzaixian_351879", False), # 图解书/无字or少字 - ("zhongwenzaixian/zhongwenzaixian_61357496_pdfvector", False), # 书法集 - ("zhongwenzaixian/zhongwenzaixian_63684541", False), # 设计图 - ("zhongwenzaixian/zhongwenzaixian_61525978", False), # 绘本 - ("zhongwenzaixian/zhongwenzaixian_63679729", False), # 摄影集 - - ]) -def test_classify_by_avg_words(book_name, expected_bool_classify_by_avg_words): - docs = get_docs_from_test_pdf(book_name) - text_len_list = get_pdf_textlen_per_page(docs) - bool_classify_by_avg_words = classify_by_avg_words(text_len_list) - # assert bool_classify_by_avg_words == expected_bool_classify_by_avg_words - - -''' -这个规则只针对特殊扫描版1,因为扫描版1的图片信息都由于junk_list的原因被舍弃了,只能通过图片数量来判断 -''' -@pytest.mark.parametrize("book_name, expected_bool_classify_by_img_num", - [ - ("zlib/zlib_21370453", False), # 特殊扫描版1,每页都有所有扫描页图片,特点是图占比大,每页展示1至n张 - ("zlib/zlib_22115997", False), # 特殊扫描版2,类似特1,但是每页数量不完全相等 - ("zlib/zlib_21814957", False), # 特殊扫描版3,类似特1,但是每页数量不完全相等 - ("zlib/zlib_21814955", False), # 特殊扫描版4,类似特1,但是每页数量不完全相等 - ]) -def test_classify_by_img_num(book_name, expected_bool_classify_by_img_num): - test_data = get_test_json_data(current_directory, "test_metascan_classify_data.json") - docs = get_docs_from_test_pdf(book_name) - img_num_list = get_imgs_per_page(docs) - img_sz_list = test_data[book_name]["expected_image_info"] - bool_classify_by_img_num = classify_by_img_num(img_sz_list, img_num_list) - # assert bool_classify_by_img_num == expected_bool_classify_by_img_num - - -''' -排除纵向排版的pdf -''' -@pytest.mark.parametrize("book_name, expected_bool_classify_by_text_layout", - [ - ("vertical_detection/三国演义_繁体竖排版", False), # 竖排版本1 - ("vertical_detection/净空法师_大乘无量寿", False), # 竖排版本2 - ("vertical_detection/om3006239", True), # 横排版本1 - ("vertical_detection/isit.2006.261791", True), # 横排版本2 - ]) -def test_classify_by_text_layout(book_name, expected_bool_classify_by_text_layout): - test_data = get_test_json_data(current_directory, "test_metascan_classify_data.json") - text_layout_per_page = test_data[book_name]["expected_text_layout"] - bool_classify_by_text_layout = classify_by_text_layout(text_layout_per_page) - # assert bool_classify_by_text_layout == expected_bool_classify_by_text_layout - - -''' -通过检测页面是否由多个窄长条图像组成,来过滤特殊的扫描版 -这个规则只对窄长条组成的pdf进行识别,而不会识别常规的大图扫描pdf -''' -@pytest.mark.parametrize("book_name, expected_bool_classify_by_img_narrow_strips", - [ - ("scihub/scihub_25900000/libgen.scimag25991000-25991999.zip_10.2307/40066695", False), # 特殊扫描版 - ("the_eye/the_eye_wtl_00023799", False), # 特殊扫描版4,每一页都是一张张小图拼出来的,检测图片占比之前需要先按规则把小图拼成大图 - ("the_eye/the_eye_cdn_00328381", False), # 特殊扫描版5,每一页都是一张张小图拼出来的,存在多个小图多次重复使用情况,检测图片占比之前需要先按规则把小图拼成大图 - ("scanned_detection/llm-raw-scihub-o.O-0584-8539%2891%2980165-f", False), # 特殊扫描版7,只有一页且由小图拼成大图 - ("scihub/scihub_25800000/libgen.scimag25889000-25889999.zip_10.2307/4153991", True), # 特殊扫描版6,只有三页,其中两页是扫描版 - ("scanned_detection/llm-raw-scihub-o.O-bf01427123", True), # 特殊扫描版8,只有3页且全是大图扫描版 - ("scihub/scihub_53700000/libgen.scimag53724000-53724999.zip_10.1097/00129191-200509000-00018", True), # 特殊文本版,有一长条,但是只有一条 - ]) -def test_classify_by_img_narrow_strips(book_name, expected_bool_classify_by_img_narrow_strips): - test_data = get_test_json_data(current_directory, "test_metascan_classify_data.json") - img_sz_list = test_data[book_name]["expected_image_info"] - docs = get_docs_from_test_pdf(book_name) - median_width, median_height = get_pdf_page_size_pts(docs) - page_width = int(median_width) - page_height = int(median_height) - bool_classify_by_img_narrow_strips = classify_by_img_narrow_strips(page_width, page_height, img_sz_list) - # assert bool_classify_by_img_narrow_strips == expected_bool_classify_by_img_narrow_strips \ No newline at end of file diff --git a/tests/unittest/test_metascan_classify/test_commons.py.bak b/tests/unittest/test_metascan_classify/test_commons.py.bak deleted file mode 100644 index 6dd6c146..00000000 --- a/tests/unittest/test_metascan_classify/test_commons.py.bak +++ /dev/null @@ -1,80 +0,0 @@ -import io -import json -import os - -import fitz -import boto3 -from botocore.config import Config - -from magic_pdf.libs.config_reader import get_s3_config_dict - -from magic_pdf.libs.commons import join_path, json_dump_path, read_file, parse_bucket_key -from loguru import logger - -test_pdf_dir_path = "s3://llm-pdf-text/unittest/pdf/" - - -def get_test_pdf_json(book_name): - json_path = join_path(json_dump_path, book_name + ".json") - s3_config = get_s3_config_dict(json_path) - file_content = read_file(json_path, s3_config) - json_str = file_content.decode('utf-8') - json_object = json.loads(json_str) - return json_object - - -def read_test_file(book_name): - test_pdf_path = join_path(test_pdf_dir_path, book_name + ".pdf") - s3_config = get_s3_config_dict(test_pdf_path) - try: - file_content = read_file(test_pdf_path, s3_config) - return file_content - except Exception as e: - if "NoSuchKey" in str(e): - logger.warning("File not found in test_pdf_path. Downloading from orig_s3_pdf_path.") - try: - json_object = get_test_pdf_json(book_name) - orig_s3_pdf_path = json_object.get('file_location') - s3_config = get_s3_config_dict(orig_s3_pdf_path) - file_content = read_file(orig_s3_pdf_path, s3_config) - s3_client = get_s3_client(test_pdf_path) - bucket_name, bucket_key = parse_bucket_key(test_pdf_path) - file_obj = io.BytesIO(file_content) - s3_client.upload_fileobj(file_obj, bucket_name, bucket_key) - return file_content - except Exception as e: - logger.exception(e) - else: - logger.exception(e) - - -def get_docs_from_test_pdf(book_name): - file_content = read_test_file(book_name) - return fitz.open("pdf", file_content) - - -def get_test_json_data(directory_path, json_file_name): - with open(os.path.join(directory_path, json_file_name), "r", encoding='utf-8') as f: - test_data = json.load(f) - return test_data - - -def get_s3_client(path): - s3_config = get_s3_config_dict(path) - try: - return boto3.client( - "s3", - aws_access_key_id=s3_config["ak"], - aws_secret_access_key=s3_config["sk"], - endpoint_url=s3_config["endpoint"], - config=Config(s3={"addressing_style": "path"}, retries={"max_attempts": 8, "mode": "standard"}), - ) - except: - # older boto3 do not support retries.mode param. - return boto3.client( - "s3", - aws_access_key_id=s3_config["ak"], - aws_secret_access_key=s3_config["sk"], - endpoint_url=s3_config["endpoint"], - config=Config(s3={"addressing_style": "path"}, retries={"max_attempts": 8}), - ) diff --git a/tests/unittest/test_metascan_classify/test_meta_scan.py.bak b/tests/unittest/test_metascan_classify/test_meta_scan.py.bak deleted file mode 100644 index e312a831..00000000 --- a/tests/unittest/test_metascan_classify/test_meta_scan.py.bak +++ /dev/null @@ -1,84 +0,0 @@ -import os - -import pytest -from magic_pdf.filter.pdf_meta_scan import get_pdf_page_size_pts, get_image_info, get_pdf_text_layout_per_page, get_language -from test_commons import get_docs_from_test_pdf, get_test_json_data - -# 获取当前目录 -current_directory = os.path.dirname(os.path.abspath(__file__)) - -''' -获取pdf的宽与高,宽和高各用一个list,分别取中位数 -''' -@pytest.mark.parametrize("book_name, expected_width, expected_height", - [ - ("zlib/zlib_17058115", 795, 1002), # pdf中最大页与最小页差异极大个例 - ("the_eye/the_eye_wtl_00023799", 616, 785) # 采样的前50页存在中位数大小页面横竖旋转情况 - ]) -def test_get_pdf_page_size_pts(book_name, expected_width, expected_height): - docs = get_docs_from_test_pdf(book_name) - median_width, median_height = get_pdf_page_size_pts(docs) - - # assert int(median_width) == expected_width - # assert int(median_height) == expected_height - - -''' -获取pdf前50页的图片信息,为了提速,对特殊扫描版1的情况做了过滤,其余情况都正常取图片信息 -''' -@pytest.mark.parametrize("book_name", - [ - "zlib/zlib_21370453", # 特殊扫描版1,每页都有所有扫描页图片,特点是图占比大,每页展示1至n张 - "the_eye/the_eye_cdn_00391653", # 特殊文字版1.每页存储所有图片,特点是图片占页面比例不大,每页展示可能为0也可能不止1张,这种pdf需要拿前10页抽样检测img大小和个数,如果符合需要清空junklist - "scihub/scihub_08400000/libgen.scimag08489000-08489999.zip_10.1016/0370-1573(90)90070-i", # 扫描版2,每页存储的扫描页图片数量递增,特点是图占比大,每页展示1张,需要清空junklist跑前50页图片信息用于分类判断 - "zlib/zlib_17216416", # 特殊扫描版3,有的页面是一整张大图,有的页面是通过一条条小图拼起来的 - "the_eye/the_eye_wtl_00023799", # 特殊扫描版4,每一页都是一张张小图拼出来的 - "the_eye/the_eye_cdn_00328381", # 特殊扫描版5,每一页都是一张张小图拼出来的,但是存在多个小图多次重复使用情况 - "scihub/scihub_25800000/libgen.scimag25889000-25889999.zip_10.2307/4153991", # 特殊扫描版6,只有3页且其中两页是扫描页 - "scanned_detection/llm-raw-scihub-o.O-0584-8539%2891%2980165-f", # 特殊扫描版7,只有一页,且是一张张小图拼出来的 - "scanned_detection/llm-raw-scihub-o.O-bf01427123", # 特殊扫描版8,只有3页且全是大图扫描版 - "zlib/zlib_22115997", # 特殊扫描版9,类似特1,但是每页数量不完全相等 - "zlib/zlib_21814957", # 特殊扫描版10,类似特1,但是每页数量不完全相等 - "zlib/zlib_21814955", # 特殊扫描版11,类似特1,但是每页数量不完全相等 - "scihub/scihub_41200000/libgen.scimag41253000-41253999.zip_10.1080/00222938709460256", # 特殊扫描版12,头两页文字版且有一页没图片,后面扫描版11页 - "scihub/scihub_37000000/libgen.scimag37068000-37068999.zip_10.1080/0015587X.1936.9718622" # 特殊扫描版13,头两页文字版且有一页没图片,后面扫描版3页 - ]) -def test_get_image_info(book_name): - test_data = get_test_json_data(current_directory, "test_metascan_classify_data.json") - docs = get_docs_from_test_pdf(book_name) - page_width_pts, page_height_pts = get_pdf_page_size_pts(docs) - image_info, junk_img_bojids = get_image_info(docs, page_width_pts, page_height_pts) - - # assert image_info == test_data[book_name]["expected_image_info"] - # assert junk_img_bojids == test_data[book_name]["expected_junk_img_bojids"] - - -''' -获取pdf前50页的文本布局信息,输出list,每个元素为一个页面的横竖排信息 -''' -@pytest.mark.parametrize("book_name", - [ - "vertical_detection/三国演义_繁体竖排版", # 竖排版本1 - "vertical_detection/净空法师_大乘无量寿", # 竖排版本2 - "vertical_detection/om3006239", # 横排版本1 - "vertical_detection/isit.2006.261791" # 横排版本2 - ]) -def test_get_text_layout_info(book_name): - test_data = get_test_json_data(current_directory, "test_metascan_classify_data.json") - - docs = get_docs_from_test_pdf(book_name) - text_layout_info = get_pdf_text_layout_per_page(docs) - # assert text_layout_info == test_data[book_name]["expected_text_layout"] - - -''' -获取pdf的语言信息 -''' -@pytest.mark.parametrize("book_name, expected_language", - [ - ("scihub/scihub_05000000/libgen.scimag05023000-05023999.zip_10.1034/j.1601-0825.2003.02933.x", "en"), # 英文论文 - ]) -def test_get_text_language_info(book_name, expected_language): - docs = get_docs_from_test_pdf(book_name) - text_language = get_language(docs) - # assert text_language == expected_language diff --git a/tests/unittest/test_metascan_classify/test_metascan_classify_data.json b/tests/unittest/test_metascan_classify/test_metascan_classify_data.json deleted file mode 100644 index 6ea17c95..00000000 --- a/tests/unittest/test_metascan_classify/test_metascan_classify_data.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "zlib/zlib_21370453": { - "expected_image_info": [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], - "expected_junk_img_bojids": [3259, 3268, 3358, 3359, 3360, 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3269, 3368, 3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376, 3377, 3270, 3378, 3379, 3380, 3381, 3382, 3383, 3384, 3385, 3386, 3387, 3271, 3388, 3389, 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3397, 3272, 3398, 3399, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3273, 3408, 3409, 3410, 3411, 3412, 3413, 3414, 3415, 3416, 3417, 3274, 3418, 3419, 3420, 3421, 3422, 3423, 3424, 3425, 3426, 3427, 3275, 3428, 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3276, 3438, 3439, 3440, 3441, 3442, 3443, 3444, 3445, 3446, 3447, 3277, 3448, 3449, 3450, 3451, 3452, 3453, 3454, 3455, 3456, 3457, 3260, 3278, 3458, 3459, 3460, 3461, 3462, 3463, 3464, 3465, 3466, 3467, 3279, 3468, 3469, 3470, 3471, 3472, 3473, 3474, 3475, 3476, 3477, 3280, 3478, 3479, 3480, 3481, 3482, 3483, 3484, 3485, 3486, 3487, 3281, 3488, 3489, 3490, 3491, 3492, 3493, 3494, 3495, 3496, 3497, 3282, 3498, 3499, 3500, 3501, 3502, 3503, 3504, 3505, 3506, 3507, 3283, 3508, 3509, 3510, 3511, 3512, 3513, 3514, 3515, 3516, 3517, 3284, 3518, 3519, 3520, 3521, 3522, 3523, 3524, 3525, 3526, 3527, 3285, 3528, 3529, 3530, 3531, 3532, 3533, 3534, 3535, 3536, 3537, 3286, 3538, 3539, 3540, 3541, 3542, 3543, 3544, 3545, 3546, 3547, 3287, 3548, 3549, 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3261, 3288, 3558, 3559, 3560, 3289, 3290, 3291, 3292, 3293, 3294, 3295, 3296, 3297, 3262, 3298, 3299, 3300, 3301, 3302, 3303, 3304, 3305, 3306, 3307, 3263, 3308, 3309, 3310, 3311, 3312, 3313, 3314, 3315, 3316, 3317, 3264, 3318, 3319, 3320, 3321, 3322, 3323, 3324, 3325, 3326, 3327, 3265, 3328, 3329, 3330, 3331, 3332, 3333, 3334, 3335, 3336, 3337, 3266, 3338, 3339, 3340, 3341, 3342, 3343, 3344, 3345, 3346, 3347, 3267, 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357, 3561, 3563, 3565, 3567, 3569, 3571, 3573, 3575, 3577, 3579, 3581, 3583, 3585, 3587, 3589, 3591, 3593, 3595, 3597, 3599, 3601, 3603, 3605, 3607, 3609, 3611, 3613, 3615, 3617, 3619, 3621, 3623, 3625, 3627, 3629, 3631, 3633, 3635, 3637, 3639, 3641, 3643, 3645, 3647, 3649, 3651, 3653, 3655, 3657, 3659, 3661, 3663, 3665, 3667, 3669, 3671, 3673, 3675, 3677, 3679, 3681, 3683, 3685, 3687, 3689, 3691, 3693, 3695, 3697, 3699, 3701, 3703, 3705, 3707, 3709, 3711, 3713, 3715, 3717, 3719, 3721, 3723, 3725, 3727, 3729, 3731, 3733, 3735, 3737, 3739, 3741, 3743, 3745, 3747, 3749, 3751, 3753, 3755, 3757, 3759, 3761, 3763, 3765, 3767, 3769, 3771, 3773, 3775, 3777, 3779, 3781, 3783, 3785, 3787, 3789, 3791, 3793, 3795, 3797, 3799, 3801, 3803, 3805, 3807, 3809, 3811, 3813, 3815, 3817, 3819, 3821, 3823, 3825, 3827, 3829, 3831, 3833, 3835, 3837, 3839, 3841, 3843, 3845, 3847, 3849, 3851, 3853, 3855, 3857, 3859, 3861, 3863, 3865, 3867, 3869, 3871, 3873, 3875, 3877, 3879, 3881, 3883, 3885, 3887, 3889, 3891, 3893, 3895, 3897, 3899, 3901, 3903, 3905, 3907, 3909, 3911, 3913, 3915, 3917, 3919, 3921, 3923, 3925, 3927, 3929, 3931, 3933, 3935, 3937, 3939, 3941, 3943, 3945, 3947, 3949, 3951, 3953, 3955, 3957, 3959, 3961, 3963, 3965, 3967, 3969, 3971, 3973, 3975, 3977, 3979, 3981, 3983, 3985, 3987, 3989, 3991, 3993, 3995, 3997, 3999, 4001, 4003, 4005, 4007, 4009, 4011, 4013, 4015, 4017, 4019, 4021, 4023, 4025, 4027, 4029, 4031, 4033, 4035, 4037, 4039, 4041, 4043, 4045, 4047, 4049, 4051, 4053, 4055, 4057, 4059, 4061, 4063, 4065, 4067, 4069, 4071, 4073, 4075, 4077, 4079, 4081, 4083, 4085, 4087, 4089, 4091, 4093, 4095, 4097, 4099, 4101, 4103, 4105, 4107, 4109, 4111, 4113, 4115, 4117, 4119, 4121, 4123, 4125, 4127, 4129] - }, - "the_eye/the_eye_cdn_00391653" : { - "expected_image_info": [[[54, 233, 558, 670, 3]], [[442, 104, 535, 268, 7]], [], [], [], [], [], [], [], [[324, 128, 557, 476, 25]], [[54, 129, 288, 313, 29], [54, 476, 287, 630, 30], [324, 266, 557, 403, 31]], [[54, 54, 287, 374, 37], [324, 53, 557, 288, 38]], [[324, 66, 557, 447, 43]], [[54, 78, 288, 306, 47], [54, 331, 287, 648, 48], [324, 179, 557, 300, 49], [324, 387, 557, 580, 50]], [[54, 254, 557, 672, 57]], [[54, 53, 287, 211, 61], [54, 386, 287, 688, 62]], [[63, 54, 548, 360, 67]], [[62, 54, 549, 489, 71]], [[324, 53, 557, 399, 75]], [[54, 117, 557, 323, 79]], [[68, 60, 275, 272, 83], [60, 347, 280, 617, 84], [340, 354, 541, 633, 85]], [], [[54, 442, 557, 687, 93]], [[49, 66, 282, 439, 97], [324, 441, 558, 658, 98]], [[54, 241, 287, 315, 103], [66, 516, 545, 690, 104]], [[54, 53, 557, 655, 109]], [[54, 50, 557, 689, 113]], [[324, 79, 557, 656, 117]], [[109, 54, 502, 685, 121]], [[54, 379, 288, 642, 125]], [], [[156, 49, 455, 617, 131]], [[54, 40, 557, 679, 135]], [[54, 166, 557, 665, 139]], [[67, 45, 544, 691, 143]], [[54, 43, 557, 694, 147]], [[54, 53, 557, 372, 151]], [], [], [], [], [[54, 153, 557, 659, 163]], [[54, 53, 287, 223, 167], [324, 273, 557, 422, 168], [324, 430, 557, 554, 169]], [[324, 466, 557, 641, 175]], [[49, 279, 283, 390, 179], [324, 54, 558, 568, 180]], [[54, 66, 287, 477, 185]], [[54, 87, 557, 459, 189]], [[173, 47, 438, 693, 193]], [[54, 79, 557, 571, 197]], [[54, 54, 557, 679, 201]]], - "expected_junk_img_bojids": [] - }, - "scihub/scihub_08400000/libgen.scimag08489000-08489999.zip_10.1016/0370-1573(90)90070-i" : { - "expected_image_info": [[[-10, -10, 590, 729, 1273]], [[-10, -10, 590, 729, 1277]], [[-10, -10, 590, 729, 807]], [[-10, -10, 590, 729, 809]], [[-10, -10, 590, 729, 811]], [[-10, -10, 590, 729, 813]], [[-10, -10, 590, 729, 815]], [[-10, -10, 590, 729, 817]], [[-10, -10, 590, 729, 819]], [[-10, -10, 590, 729, 821]], [[-10, -10, 590, 729, 823]], [[-10, -10, 590, 729, 825]], [[-10, -10, 590, 729, 827]], [[-10, -10, 590, 729, 829]], [[-10, -10, 590, 729, 831]], [[-10, -10, 590, 729, 833]], [[-10, -10, 590, 729, 835]], [[-10, -10, 590, 729, 837]], [[-10, -10, 590, 729, 839]], [[-10, -10, 590, 729, 841]], [[-10, -10, 590, 729, 843]], [[-10, -10, 590, 729, 845]], [[-10, -10, 590, 729, 847]], [[-10, -10, 590, 729, 849]], [[-10, -10, 590, 729, 851]], [[-10, -10, 590, 729, 853]], [[-10, -10, 590, 729, 855]], [[-10, -10, 590, 729, 857]], [[-10, -10, 590, 729, 859]], [[-10, -10, 590, 729, 861]], [[-10, -10, 590, 729, 863]], [[-10, -10, 590, 729, 865]], [[-10, -10, 590, 729, 867]], [[-10, -10, 590, 729, 869]], [[-10, -10, 590, 729, 871]], [[-10, -10, 590, 729, 873]], [[-10, -10, 590, 729, 875]], [[-10, -10, 590, 729, 877]], [[-10, -10, 590, 729, 879]], [[-10, -10, 590, 729, 881]], [[-10, -10, 590, 729, 883]], [[-10, -10, 590, 729, 885]], [[-10, -10, 590, 729, 887]], [[-10, -10, 590, 729, 889]], [[-10, -10, 590, 729, 891]], [[-10, -10, 590, 729, 893]], [[-10, -10, 590, 729, 895]], [[-10, -10, 590, 729, 897]], [[-10, -10, 590, 729, 899]], [[-10, -10, 590, 729, 901]]], - "expected_junk_img_bojids": [] - }, - "zlib/zlib_17216416" : { - "expected_image_info": [[[0, 0, 531, 720, 36742]], [[0, 0, 529, 28, 59], [0, 28, 529, 57, 61], [0, 57, 529, 86, 63], [0, 86, 529, 115, 65], [0, 114, 529, 143, 67], [0, 143, 529, 172, 69], [0, 172, 529, 201, 71], [0, 201, 529, 230, 73], [0, 230, 529, 259, 75], [0, 259, 529, 287, 77], [0, 287, 529, 316, 79], [0, 345, 529, 374, 83], [0, 403, 529, 431, 87], [0, 431, 529, 460, 89], [0, 547, 529, 575, 97], [0, 575, 529, 604, 99], [0, 604, 529, 633, 101], [0, 633, 529, 662, 103], [0, 662, 529, 691, 105], [0, 691, 529, 719, 107], [0, 719, 529, 737, 109]], [[0, 0, 519, 28, 131], [0, 28, 519, 57, 133], [0, 57, 519, 86, 135], [0, 86, 519, 115, 137], [0, 115, 519, 144, 139], [0, 143, 519, 172, 141], [0, 172, 519, 201, 143], [0, 201, 519, 230, 145], [0, 230, 519, 259, 147], [0, 288, 519, 316, 151], [0, 316, 519, 345, 153], [0, 345, 519, 374, 155], [0, 374, 519, 403, 157], [0, 403, 519, 432, 159], [0, 460, 519, 489, 163], [0, 489, 519, 518, 165], [0, 518, 519, 547, 167], [0, 547, 519, 576, 169], [0, 576, 519, 604, 171], [0, 604, 519, 633, 173], [0, 633, 519, 662, 175], [0, 662, 519, 691, 177], [0, 691, 519, 720, 179]], [[0, 0, 528, 28, 201], [0, 28, 528, 57, 203], [0, 57, 528, 86, 205], [0, 85, 528, 114, 207], [0, 114, 528, 143, 209], [0, 143, 528, 172, 211], [0, 172, 528, 201, 213], [0, 201, 528, 230, 215], [0, 229, 528, 258, 217], [0, 258, 528, 287, 219], [0, 287, 528, 316, 221], [0, 316, 528, 345, 223], [0, 345, 528, 374, 225], [0, 374, 528, 402, 227], [0, 402, 528, 431, 229], [0, 431, 528, 460, 231], [0, 460, 528, 489, 233], [0, 489, 528, 518, 235], [0, 518, 528, 546, 237], [0, 546, 528, 575, 239], [0, 575, 528, 604, 241], [0, 604, 528, 633, 243], [0, 633, 528, 662, 245], [0, 662, 528, 690, 247], [0, 690, 528, 719, 249], [0, 719, 528, 737, 251]], [[0, 0, 528, 29, 273], [0, 57, 528, 86, 277], [0, 86, 528, 115, 279], [0, 115, 528, 144, 281], [0, 144, 528, 173, 283], [0, 173, 528, 202, 285], [0, 201, 528, 230, 287], [0, 230, 528, 259, 289], [0, 259, 528, 288, 291], [0, 288, 528, 317, 293], [0, 317, 528, 346, 295], [0, 346, 528, 374, 297], [0, 374, 528, 403, 299], [0, 403, 528, 432, 301], [0, 432, 528, 461, 303], [0, 576, 528, 605, 313], [0, 662, 528, 691, 319], [0, 691, 528, 720, 321], [0, 720, 528, 736, 323]], [[0, 0, 529, 29, 345], [0, 29, 529, 58, 347], [0, 57, 529, 86, 349], [0, 86, 529, 115, 351], [0, 115, 529, 144, 353], [0, 144, 529, 173, 355], [0, 173, 529, 202, 357], [0, 201, 529, 230, 359], [0, 230, 529, 259, 361], [0, 259, 529, 288, 363], [0, 288, 529, 317, 365], [0, 317, 529, 346, 367], [0, 346, 529, 374, 369], [0, 374, 529, 403, 371], [0, 403, 529, 432, 373], [0, 432, 529, 461, 375], [0, 461, 529, 490, 377], [0, 490, 529, 518, 379], [0, 518, 529, 547, 381], [0, 547, 529, 576, 383], [0, 576, 529, 605, 385], [0, 605, 529, 634, 387], [0, 634, 529, 662, 389], [0, 662, 529, 691, 391], [0, 691, 529, 720, 393], [0, 720, 529, 740, 395]], [[0, 0, 519, 29, 417], [0, 29, 519, 58, 419], [0, 58, 519, 88, 421], [0, 88, 519, 117, 423], [0, 117, 519, 147, 425], [0, 147, 519, 176, 427], [0, 176, 519, 205, 429], [0, 205, 519, 235, 431], [0, 235, 519, 264, 433], [0, 264, 519, 294, 435], [0, 294, 519, 323, 437], [0, 323, 519, 352, 439], [0, 352, 519, 382, 441], [0, 382, 519, 411, 443], [0, 411, 519, 441, 445], [0, 441, 519, 470, 447], [0, 470, 519, 499, 449], [0, 499, 519, 529, 451], [0, 529, 519, 558, 453], [0, 558, 519, 588, 455], [0, 588, 519, 617, 457], [0, 646, 519, 676, 461], [0, 705, 519, 734, 465]], [[0, 0, 529, 28, 487], [0, 28, 529, 57, 489], [0, 57, 529, 86, 491], [0, 86, 529, 115, 493], [0, 115, 529, 144, 495], [0, 143, 529, 172, 497], [0, 172, 529, 201, 499], [0, 201, 529, 230, 501], [0, 230, 529, 259, 503], [0, 259, 529, 288, 505], [0, 288, 529, 316, 507], [0, 316, 529, 345, 509], [0, 345, 529, 374, 511], [0, 374, 529, 403, 513], [0, 403, 529, 432, 515], [0, 432, 529, 460, 517], [0, 460, 529, 489, 519], [0, 489, 529, 518, 521], [0, 518, 529, 547, 523], [0, 547, 529, 576, 525], [0, 576, 529, 604, 527], [0, 604, 529, 633, 529], [0, 633, 529, 662, 531], [0, 662, 529, 691, 533], [0, 691, 529, 720, 535], [0, 720, 529, 739, 537]], [[0, 0, 519, 29, 559], [0, 29, 519, 58, 561], [0, 57, 519, 86, 563], [0, 86, 519, 115, 565], [0, 115, 519, 144, 567], [0, 144, 519, 173, 569], [0, 173, 519, 202, 571], [0, 201, 519, 230, 573], [0, 230, 519, 259, 575], [0, 259, 519, 288, 577], [0, 288, 519, 317, 579], [0, 317, 519, 346, 581], [0, 346, 519, 374, 583], [0, 374, 519, 403, 585], [0, 403, 519, 432, 587], [0, 432, 519, 461, 589], [0, 461, 519, 490, 591], [0, 490, 519, 518, 593], [0, 518, 519, 547, 595], [0, 547, 519, 576, 597], [0, 576, 519, 605, 599], [0, 605, 519, 634, 601], [0, 634, 519, 662, 603], [0, 691, 519, 720, 607]], [[0, 0, 519, 28, 629], [0, 28, 519, 57, 631], [0, 57, 519, 86, 633], [0, 86, 519, 115, 635], [0, 114, 519, 143, 637], [0, 143, 519, 172, 639], [0, 172, 519, 201, 641], [0, 201, 519, 230, 643], [0, 230, 519, 259, 645], [0, 259, 519, 287, 647], [0, 287, 519, 316, 649], [0, 316, 519, 345, 651], [0, 345, 519, 374, 653], [0, 374, 519, 403, 655], [0, 403, 519, 431, 657], [0, 431, 519, 460, 659], [0, 460, 519, 489, 661], [0, 489, 519, 518, 663], [0, 518, 519, 547, 665], [0, 547, 519, 575, 667], [0, 575, 519, 604, 669], [0, 604, 519, 633, 671], [0, 633, 519, 662, 673], [0, 662, 519, 691, 675], [0, 691, 519, 719, 677]], [[0, 0, 519, 29, 699], [0, 29, 519, 58, 701], [0, 58, 519, 88, 703], [0, 88, 519, 117, 705], [0, 117, 519, 147, 707], [0, 147, 519, 176, 709], [0, 176, 519, 205, 711], [0, 205, 519, 235, 713], [0, 235, 519, 264, 715], [0, 264, 519, 294, 717], [0, 294, 519, 323, 719], [0, 323, 519, 352, 721], [0, 352, 519, 382, 723], [0, 382, 519, 411, 725], [0, 411, 519, 441, 727], [0, 441, 519, 470, 729], [0, 470, 519, 499, 731], [0, 499, 519, 529, 733], [0, 529, 519, 558, 735], [0, 558, 519, 588, 737], [0, 588, 519, 617, 739], [0, 617, 519, 646, 741], [0, 646, 519, 676, 743], [0, 705, 519, 734, 747]], [[0, 0, 519, 28, 769], [0, 28, 519, 57, 771], [0, 57, 519, 86, 773], [0, 86, 519, 115, 775], [0, 114, 519, 143, 777], [0, 143, 519, 172, 779], [0, 172, 519, 201, 781], [0, 201, 519, 230, 783], [0, 230, 519, 259, 785], [0, 259, 519, 287, 787], [0, 287, 519, 316, 789], [0, 316, 519, 345, 791], [0, 345, 519, 374, 793], [0, 374, 519, 403, 795], [0, 403, 519, 431, 797], [0, 431, 519, 460, 799], [0, 460, 519, 489, 801], [0, 489, 519, 518, 803], [0, 518, 519, 547, 805], [0, 547, 519, 575, 807], [0, 575, 519, 604, 809], [0, 604, 519, 633, 811], [0, 633, 519, 662, 813], [0, 691, 519, 719, 817]], [[0, 0, 523, 28, 839], [0, 28, 523, 57, 841], [0, 57, 523, 86, 843], [0, 86, 523, 115, 845], [0, 115, 523, 144, 847], [0, 143, 523, 172, 849], [0, 172, 523, 201, 851], [0, 201, 523, 230, 853], [0, 230, 523, 259, 855], [0, 259, 523, 288, 857], [0, 288, 523, 316, 859], [0, 316, 523, 345, 861], [0, 345, 523, 374, 863], [0, 374, 523, 403, 865], [0, 403, 523, 432, 867], [0, 432, 523, 460, 869], [0, 460, 523, 489, 871], [0, 489, 523, 518, 873], [0, 518, 523, 547, 875], [0, 547, 523, 576, 877], [0, 576, 523, 604, 879], [0, 604, 523, 633, 881], [0, 633, 523, 662, 883], [0, 662, 523, 691, 885], [0, 720, 523, 734, 889]], [[0, 0, 525, 28, 911], [0, 57, 525, 86, 915], [0, 85, 525, 114, 917], [0, 114, 525, 143, 919], [0, 143, 525, 172, 921], [0, 172, 525, 201, 923], [0, 201, 525, 230, 925], [0, 229, 525, 258, 927], [0, 258, 525, 287, 929], [0, 287, 525, 316, 931], [0, 316, 525, 345, 933], [0, 345, 525, 374, 935], [0, 374, 525, 402, 937], [0, 431, 525, 460, 941], [0, 460, 525, 489, 943], [0, 489, 525, 518, 945], [0, 518, 525, 546, 947], [0, 546, 525, 575, 949], [0, 575, 525, 604, 951], [0, 662, 525, 690, 957], [0, 719, 525, 735, 961]], [[0, 0, 519, 28, 983], [0, 28, 519, 57, 985], [0, 57, 519, 86, 987], [0, 86, 519, 115, 989], [0, 115, 519, 144, 991], [0, 143, 519, 172, 993], [0, 172, 519, 201, 995], [0, 201, 519, 230, 997], [0, 230, 519, 259, 999], [0, 259, 519, 288, 1001], [0, 288, 519, 316, 1003], [0, 316, 519, 345, 1005], [0, 345, 519, 374, 1007], [0, 374, 519, 403, 1009], [0, 403, 519, 432, 1011], [0, 432, 519, 460, 1013], [0, 460, 519, 489, 1015], [0, 489, 519, 518, 1017], [0, 518, 519, 547, 1019], [0, 576, 519, 604, 1023], [0, 633, 519, 662, 1027], [0, 691, 519, 720, 1031]], [[0, 0, 525, 29, 1053], [0, 57, 525, 86, 1057], [0, 173, 525, 202, 1065], [0, 201, 525, 230, 1067], [0, 230, 525, 259, 1069], [0, 259, 525, 288, 1071], [0, 288, 525, 317, 1073], [0, 317, 525, 346, 1075], [0, 346, 525, 374, 1077], [0, 374, 525, 403, 1079], [0, 403, 525, 432, 1081], [0, 432, 525, 461, 1083], [0, 461, 525, 490, 1085], [0, 490, 525, 518, 1087], [0, 518, 525, 547, 1089], [0, 547, 525, 576, 1091], [0, 576, 525, 605, 1093], [0, 605, 525, 634, 1095], [0, 634, 525, 662, 1097], [0, 662, 525, 691, 1099], [0, 691, 525, 720, 1101], [0, 720, 525, 736, 1103]], [[0, 0, 519, 28, 1125], [0, 28, 519, 57, 1127], [0, 57, 519, 86, 1129], [0, 86, 519, 115, 1131], [0, 114, 519, 143, 1133], [0, 143, 519, 172, 1135], [0, 172, 519, 201, 1137], [0, 201, 519, 230, 1139], [0, 230, 519, 259, 1141], [0, 259, 519, 287, 1143], [0, 287, 519, 316, 1145], [0, 316, 519, 345, 1147], [0, 345, 519, 374, 1149], [0, 374, 519, 403, 1151], [0, 403, 519, 431, 1153], [0, 431, 519, 460, 1155], [0, 460, 519, 489, 1157], [0, 489, 519, 518, 1159], [0, 518, 519, 547, 1161], [0, 547, 519, 575, 1163], [0, 575, 519, 604, 1165], [0, 604, 519, 633, 1167], [0, 633, 519, 662, 1169], [0, 662, 519, 691, 1171], [0, 691, 519, 719, 1173]], [[0, 0, 525, 29, 1233], [0, 57, 525, 86, 1237], [0, 86, 525, 115, 1239], [0, 115, 525, 144, 1241], [0, 144, 525, 173, 1243], [0, 172, 525, 201, 1245], [0, 201, 525, 230, 1247], [0, 230, 525, 259, 1249], [0, 259, 525, 288, 1251], [0, 288, 525, 317, 1253], [0, 317, 525, 345, 1255], [0, 345, 525, 374, 1257], [0, 374, 525, 403, 1259], [0, 403, 525, 432, 1261], [0, 432, 525, 461, 1263], [0, 461, 525, 489, 1265], [0, 489, 525, 518, 1267], [0, 518, 525, 547, 1269], [0, 547, 525, 576, 1271], [0, 576, 525, 605, 1273], [0, 605, 525, 633, 1275], [0, 633, 525, 662, 1277], [0, 662, 525, 691, 1279], [0, 720, 525, 736, 1283]], [[0, 0, 523, 29, 1305], [0, 57, 523, 86, 1309], [0, 86, 523, 115, 1311], [0, 115, 523, 144, 1313], [0, 144, 523, 173, 1315], [0, 173, 523, 202, 1317], [0, 201, 523, 230, 1319], [0, 230, 523, 259, 1321], [0, 259, 523, 288, 1323], [0, 288, 523, 317, 1325], [0, 317, 523, 346, 1327], [0, 346, 523, 374, 1329], [0, 374, 523, 403, 1331], [0, 403, 523, 432, 1333], [0, 432, 523, 461, 1335], [0, 461, 523, 490, 1337], [0, 490, 523, 518, 1339], [0, 518, 523, 547, 1341], [0, 547, 523, 576, 1343], [0, 576, 523, 605, 1345], [0, 605, 523, 634, 1347], [0, 634, 523, 662, 1349], [0, 662, 523, 691, 1351], [0, 720, 523, 736, 1355]], [[0, 0, 528, 28, 1377], [0, 57, 528, 86, 1381], [0, 85, 528, 114, 1383], [0, 114, 528, 143, 1385], [0, 143, 528, 172, 1387], [0, 172, 528, 201, 1389], [0, 201, 528, 230, 1391], [0, 229, 528, 258, 1393], [0, 258, 528, 287, 1395], [0, 287, 528, 316, 1397], [0, 316, 528, 345, 1399], [0, 345, 528, 374, 1401], [0, 374, 528, 402, 1403], [0, 402, 528, 431, 1405], [0, 431, 528, 460, 1407], [0, 460, 528, 489, 1409], [0, 489, 528, 518, 1411], [0, 518, 528, 546, 1413], [0, 546, 528, 575, 1415], [0, 575, 528, 604, 1417], [0, 604, 528, 633, 1419], [0, 633, 528, 662, 1421], [0, 662, 528, 690, 1423], [0, 719, 528, 737, 1427]], [[0, 0, 519, 28, 1449], [0, 28, 519, 57, 1451], [0, 57, 519, 86, 1453], [0, 86, 519, 115, 1455], [0, 114, 519, 143, 1457], [0, 143, 519, 172, 1459], [0, 172, 519, 201, 1461], [0, 201, 519, 230, 1463], [0, 230, 519, 259, 1465], [0, 259, 519, 287, 1467], [0, 287, 519, 316, 1469], [0, 316, 519, 345, 1471], [0, 345, 519, 374, 1473], [0, 374, 519, 403, 1475], [0, 403, 519, 431, 1477], [0, 431, 519, 460, 1479], [0, 460, 519, 489, 1481], [0, 489, 519, 518, 1483], [0, 518, 519, 547, 1485], [0, 547, 519, 575, 1487], [0, 575, 519, 604, 1489], [0, 604, 519, 633, 1491], [0, 633, 519, 662, 1493], [0, 662, 519, 691, 1495], [0, 691, 519, 719, 1497]], [[0, 0, 529, 28, 1519], [0, 57, 529, 86, 1523], [0, 86, 529, 115, 1525], [0, 115, 529, 144, 1527], [0, 143, 529, 172, 1529], [0, 172, 529, 201, 1531], [0, 201, 529, 230, 1533], [0, 230, 529, 259, 1535], [0, 259, 529, 288, 1537], [0, 288, 529, 316, 1539], [0, 316, 529, 345, 1541], [0, 345, 529, 374, 1543], [0, 374, 529, 403, 1545], [0, 403, 529, 432, 1547], [0, 432, 529, 460, 1549], [0, 460, 529, 489, 1551], [0, 489, 529, 518, 1553], [0, 518, 529, 547, 1555], [0, 547, 529, 576, 1557], [0, 576, 529, 604, 1559], [0, 604, 529, 633, 1561], [0, 633, 529, 662, 1563], [0, 662, 529, 691, 1565], [0, 720, 529, 738, 1569]], [[0, 0, 525, 28, 1591], [0, 57, 525, 86, 1595], [0, 86, 525, 115, 1597], [0, 114, 525, 143, 1599], [0, 143, 525, 172, 1601], [0, 172, 525, 201, 1603], [0, 201, 525, 230, 1605], [0, 230, 525, 259, 1607], [0, 259, 525, 287, 1609], [0, 287, 525, 316, 1611], [0, 316, 525, 345, 1613], [0, 345, 525, 374, 1615], [0, 374, 525, 403, 1617], [0, 403, 525, 431, 1619], [0, 431, 525, 460, 1621], [0, 460, 525, 489, 1623], [0, 489, 525, 518, 1625], [0, 518, 525, 547, 1627], [0, 547, 525, 575, 1629], [0, 575, 525, 604, 1631], [0, 604, 525, 633, 1633], [0, 633, 525, 662, 1635], [0, 662, 525, 691, 1637], [0, 719, 525, 736, 1641]], [[0, 0, 528, 28, 1663], [0, 57, 528, 86, 1667], [0, 85, 528, 114, 1669], [0, 114, 528, 143, 1671], [0, 143, 528, 172, 1673], [0, 172, 528, 201, 1675], [0, 201, 528, 230, 1677], [0, 229, 528, 258, 1679], [0, 258, 528, 287, 1681], [0, 287, 528, 316, 1683], [0, 316, 528, 345, 1685], [0, 345, 528, 374, 1687], [0, 374, 528, 402, 1689], [0, 402, 528, 431, 1691], [0, 431, 528, 460, 1693], [0, 460, 528, 489, 1695], [0, 489, 528, 518, 1697], [0, 518, 528, 546, 1699], [0, 546, 528, 575, 1701], [0, 575, 528, 604, 1703], [0, 604, 528, 633, 1705], [0, 633, 528, 662, 1707], [0, 662, 528, 690, 1709], [0, 719, 528, 737, 1713]], [[0, 0, 519, 28, 1735], [0, 28, 519, 57, 1737], [0, 57, 519, 86, 1739], [0, 86, 519, 115, 1741], [0, 114, 519, 143, 1743], [0, 143, 519, 172, 1745], [0, 172, 519, 201, 1747], [0, 201, 519, 230, 1749], [0, 230, 519, 259, 1751], [0, 259, 519, 287, 1753], [0, 287, 519, 316, 1755], [0, 316, 519, 345, 1757], [0, 345, 519, 374, 1759], [0, 374, 519, 403, 1761], [0, 403, 519, 431, 1763], [0, 431, 519, 460, 1765], [0, 460, 519, 489, 1767], [0, 489, 519, 518, 1769], [0, 518, 519, 547, 1771], [0, 547, 519, 575, 1773], [0, 575, 519, 604, 1775], [0, 604, 519, 633, 1777], [0, 633, 519, 662, 1779], [0, 662, 519, 691, 1781], [0, 691, 519, 719, 1783]], [[0, 0, 525, 29, 1805], [0, 57, 525, 86, 1809], [0, 86, 525, 115, 1811], [0, 115, 525, 144, 1813], [0, 144, 525, 173, 1815], [0, 173, 525, 202, 1817], [0, 201, 525, 230, 1819], [0, 230, 525, 259, 1821], [0, 259, 525, 288, 1823], [0, 288, 525, 317, 1825], [0, 317, 525, 346, 1827], [0, 346, 525, 374, 1829], [0, 374, 525, 403, 1831], [0, 403, 525, 432, 1833], [0, 432, 525, 461, 1835], [0, 461, 525, 490, 1837], [0, 490, 525, 518, 1839], [0, 518, 525, 547, 1841], [0, 547, 525, 576, 1843], [0, 576, 525, 605, 1845], [0, 605, 525, 634, 1847], [0, 634, 525, 662, 1849], [0, 662, 525, 691, 1851], [0, 720, 525, 736, 1855]], [[0, 0, 519, 28, 1877], [0, 28, 519, 57, 1879], [0, 57, 519, 86, 1881], [0, 86, 519, 115, 1883], [0, 115, 519, 144, 1885], [0, 143, 519, 172, 1887], [0, 172, 519, 201, 1889], [0, 201, 519, 230, 1891], [0, 230, 519, 259, 1893], [0, 259, 519, 288, 1895], [0, 288, 519, 316, 1897], [0, 316, 519, 345, 1899], [0, 345, 519, 374, 1901], [0, 374, 519, 403, 1903], [0, 403, 519, 432, 1905], [0, 432, 519, 460, 1907], [0, 460, 519, 489, 1909], [0, 489, 519, 518, 1911], [0, 518, 519, 547, 1913], [0, 547, 519, 576, 1915], [0, 576, 519, 604, 1917], [0, 604, 519, 633, 1919], [0, 633, 519, 662, 1921], [0, 662, 519, 691, 1923], [0, 691, 519, 720, 1925]], [[0, 0, 525, 29, 1947], [0, 57, 525, 86, 1951], [0, 86, 525, 115, 1953], [0, 115, 525, 144, 1955], [0, 144, 525, 173, 1957], [0, 173, 525, 202, 1959], [0, 201, 525, 230, 1961], [0, 230, 525, 259, 1963], [0, 259, 525, 288, 1965], [0, 288, 525, 317, 1967], [0, 317, 525, 346, 1969], [0, 346, 525, 374, 1971], [0, 374, 525, 403, 1973], [0, 403, 525, 432, 1975], [0, 432, 525, 461, 1977], [0, 461, 525, 490, 1979], [0, 490, 525, 518, 1981], [0, 518, 525, 547, 1983], [0, 547, 525, 576, 1985], [0, 576, 525, 605, 1987], [0, 605, 525, 634, 1989], [0, 634, 525, 662, 1991], [0, 662, 525, 691, 1993], [0, 720, 525, 736, 1997]], [[0, 0, 519, 28, 2019], [0, 28, 519, 57, 2021], [0, 57, 519, 86, 2023], [0, 86, 519, 115, 2025], [0, 115, 519, 144, 2027], [0, 143, 519, 172, 2029], [0, 172, 519, 201, 2031], [0, 201, 519, 230, 2033], [0, 230, 519, 259, 2035], [0, 259, 519, 288, 2037], [0, 288, 519, 316, 2039], [0, 316, 519, 345, 2041], [0, 345, 519, 374, 2043], [0, 374, 519, 403, 2045], [0, 403, 519, 432, 2047], [0, 432, 519, 460, 2049], [0, 460, 519, 489, 2051], [0, 489, 519, 518, 2053], [0, 518, 519, 547, 2055], [0, 547, 519, 576, 2057], [0, 576, 519, 604, 2059], [0, 604, 519, 633, 2061], [0, 633, 519, 662, 2063], [0, 662, 519, 691, 2065], [0, 691, 519, 720, 2067]], [[0, 0, 525, 28, 2089], [0, 57, 525, 86, 2093], [0, 85, 525, 114, 2095], [0, 114, 525, 143, 2097], [0, 143, 525, 172, 2099], [0, 172, 525, 201, 2101], [0, 201, 525, 230, 2103], [0, 229, 525, 258, 2105], [0, 258, 525, 287, 2107], [0, 287, 525, 316, 2109], [0, 316, 525, 345, 2111], [0, 345, 525, 374, 2113], [0, 374, 525, 402, 2115], [0, 402, 525, 431, 2117], [0, 431, 525, 460, 2119], [0, 460, 525, 489, 2121], [0, 489, 525, 518, 2123], [0, 518, 525, 546, 2125], [0, 546, 525, 575, 2127], [0, 575, 525, 604, 2129], [0, 604, 525, 633, 2131], [0, 633, 525, 662, 2133], [0, 662, 525, 690, 2135], [0, 719, 525, 735, 2139]], [[0, 0, 519, 28, 2197], [0, 28, 519, 57, 2199], [0, 57, 519, 86, 2201], [0, 85, 519, 114, 2203], [0, 114, 519, 143, 2205], [0, 143, 519, 172, 2207], [0, 172, 519, 201, 2209], [0, 201, 519, 230, 2211], [0, 229, 519, 258, 2213], [0, 258, 519, 287, 2215], [0, 287, 519, 316, 2217], [0, 316, 519, 345, 2219], [0, 345, 519, 374, 2221], [0, 374, 519, 402, 2223], [0, 402, 519, 431, 2225], [0, 431, 519, 460, 2227], [0, 460, 519, 489, 2229], [0, 489, 519, 518, 2231], [0, 518, 519, 546, 2233], [0, 546, 519, 575, 2235], [0, 575, 519, 604, 2237], [0, 604, 519, 633, 2239], [0, 633, 519, 662, 2241], [0, 662, 519, 690, 2243], [0, 690, 519, 719, 2245]], [[0, 0, 527, 29, 2305], [0, 57, 527, 86, 2309], [0, 86, 527, 115, 2311], [0, 115, 527, 144, 2313], [0, 144, 527, 173, 2315], [0, 172, 527, 201, 2317], [0, 201, 527, 230, 2319], [0, 230, 527, 259, 2321], [0, 259, 527, 288, 2323], [0, 288, 527, 317, 2325], [0, 317, 527, 345, 2327], [0, 345, 527, 374, 2329], [0, 374, 527, 403, 2331], [0, 403, 527, 432, 2333], [0, 432, 527, 461, 2335], [0, 461, 527, 489, 2337], [0, 489, 527, 518, 2339], [0, 518, 527, 547, 2341], [0, 547, 527, 576, 2343], [0, 576, 527, 605, 2345], [0, 605, 527, 633, 2347], [0, 633, 527, 662, 2349], [0, 662, 527, 691, 2351], [0, 720, 527, 738, 2355]], [[0, 0, 519, 28, 2377], [0, 28, 519, 57, 2379], [0, 57, 519, 86, 2381], [0, 85, 519, 114, 2383], [0, 114, 519, 143, 2385], [0, 143, 519, 172, 2387], [0, 172, 519, 201, 2389], [0, 201, 519, 230, 2391], [0, 229, 519, 258, 2393], [0, 258, 519, 287, 2395], [0, 287, 519, 316, 2397], [0, 316, 519, 345, 2399], [0, 345, 519, 374, 2401], [0, 374, 519, 402, 2403], [0, 402, 519, 431, 2405], [0, 431, 519, 460, 2407], [0, 460, 519, 489, 2409], [0, 489, 519, 518, 2411], [0, 518, 519, 546, 2413], [0, 546, 519, 575, 2415], [0, 575, 519, 604, 2417], [0, 604, 519, 633, 2419], [0, 633, 519, 662, 2421], [0, 662, 519, 690, 2423], [0, 690, 519, 719, 2425]], [[0, 0, 525, 29, 2447], [0, 29, 525, 58, 2449], [0, 57, 525, 86, 2451], [0, 86, 525, 115, 2453], [0, 115, 525, 144, 2455], [0, 144, 525, 173, 2457], [0, 173, 525, 202, 2459], [0, 201, 525, 230, 2461], [0, 230, 525, 259, 2463], [0, 259, 525, 288, 2465], [0, 288, 525, 317, 2467], [0, 317, 525, 346, 2469], [0, 346, 525, 374, 2471], [0, 374, 525, 403, 2473], [0, 403, 525, 432, 2475], [0, 432, 525, 461, 2477], [0, 461, 525, 490, 2479], [0, 490, 525, 518, 2481], [0, 518, 525, 547, 2483], [0, 547, 525, 576, 2485], [0, 576, 525, 605, 2487], [0, 605, 525, 634, 2489], [0, 634, 525, 662, 2491], [0, 662, 525, 691, 2493], [0, 720, 525, 736, 2497]], [[0, 0, 519, 28, 2519], [0, 28, 519, 57, 2521], [0, 57, 519, 86, 2523], [0, 85, 519, 114, 2525], [0, 114, 519, 143, 2527], [0, 143, 519, 172, 2529], [0, 172, 519, 201, 2531], [0, 201, 519, 230, 2533], [0, 229, 519, 258, 2535], [0, 258, 519, 287, 2537], [0, 287, 519, 316, 2539], [0, 316, 519, 345, 2541], [0, 345, 519, 374, 2543], [0, 374, 519, 402, 2545], [0, 402, 519, 431, 2547], [0, 431, 519, 460, 2549], [0, 460, 519, 489, 2551], [0, 489, 519, 518, 2553], [0, 518, 519, 546, 2555], [0, 546, 519, 575, 2557], [0, 575, 519, 604, 2559], [0, 604, 519, 633, 2561], [0, 633, 519, 662, 2563], [0, 662, 519, 690, 2565], [0, 690, 519, 719, 2567]], [[0, 0, 527, 28, 2589], [0, 57, 527, 86, 2593], [0, 86, 527, 115, 2595], [0, 115, 527, 144, 2597], [0, 143, 527, 172, 2599], [0, 172, 527, 201, 2601], [0, 201, 527, 230, 2603], [0, 230, 527, 259, 2605], [0, 259, 527, 288, 2607], [0, 288, 527, 316, 2609], [0, 316, 527, 345, 2611], [0, 345, 527, 374, 2613], [0, 374, 527, 403, 2615], [0, 403, 527, 432, 2617], [0, 432, 527, 460, 2619], [0, 460, 527, 489, 2621], [0, 489, 527, 518, 2623], [0, 518, 527, 547, 2625], [0, 547, 527, 576, 2627], [0, 576, 527, 604, 2629], [0, 604, 527, 633, 2631], [0, 633, 527, 662, 2633], [0, 662, 527, 691, 2635], [0, 720, 527, 738, 2639]], [[0, 0, 519, 28, 2661], [0, 57, 519, 86, 2665], [0, 86, 519, 115, 2667], [0, 115, 519, 144, 2669], [0, 143, 519, 172, 2671], [0, 172, 519, 201, 2673], [0, 201, 519, 230, 2675], [0, 230, 519, 259, 2677], [0, 259, 519, 288, 2679], [0, 288, 519, 316, 2681], [0, 316, 519, 345, 2683], [0, 345, 519, 374, 2685], [0, 374, 519, 403, 2687], [0, 403, 519, 432, 2689], [0, 432, 519, 460, 2691], [0, 460, 519, 489, 2693], [0, 489, 519, 518, 2695], [0, 518, 519, 547, 2697], [0, 547, 519, 576, 2699], [0, 576, 519, 604, 2701], [0, 604, 519, 633, 2703], [0, 633, 519, 662, 2705], [0, 662, 519, 691, 2707], [0, 691, 519, 720, 2709]], [[0, 0, 525, 29, 2731], [0, 29, 525, 58, 2733], [0, 57, 525, 86, 2735], [0, 86, 525, 115, 2737], [0, 115, 525, 144, 2739], [0, 144, 525, 173, 2741], [0, 173, 525, 202, 2743], [0, 201, 525, 230, 2745], [0, 230, 525, 259, 2747], [0, 259, 525, 288, 2749], [0, 288, 525, 317, 2751], [0, 317, 525, 346, 2753], [0, 346, 525, 374, 2755], [0, 374, 525, 403, 2757], [0, 403, 525, 432, 2759], [0, 432, 525, 461, 2761], [0, 576, 525, 605, 2771], [0, 662, 525, 691, 2777], [0, 720, 525, 736, 2781]], [[0, 0, 519, 28, 2803], [0, 28, 519, 57, 2805], [0, 57, 519, 86, 2807], [0, 85, 519, 114, 2809], [0, 114, 519, 143, 2811], [0, 143, 519, 172, 2813], [0, 172, 519, 201, 2815], [0, 201, 519, 230, 2817], [0, 229, 519, 258, 2819], [0, 258, 519, 287, 2821], [0, 287, 519, 316, 2823], [0, 316, 519, 345, 2825], [0, 345, 519, 374, 2827], [0, 374, 519, 402, 2829], [0, 402, 519, 431, 2831], [0, 431, 519, 460, 2833], [0, 460, 519, 489, 2835], [0, 489, 519, 518, 2837], [0, 518, 519, 546, 2839], [0, 546, 519, 575, 2841], [0, 575, 519, 604, 2843], [0, 604, 519, 633, 2845], [0, 633, 519, 662, 2847], [0, 690, 519, 719, 2851]], [[0, 0, 529, 29, 2873], [0, 57, 529, 86, 2877], [0, 201, 529, 230, 2887], [0, 230, 529, 259, 2889], [0, 259, 529, 288, 2891], [0, 288, 529, 317, 2893], [0, 317, 529, 345, 2895], [0, 345, 529, 374, 2897], [0, 374, 529, 403, 2899], [0, 403, 529, 432, 2901], [0, 432, 529, 461, 2903], [0, 461, 529, 489, 2905], [0, 489, 529, 518, 2907], [0, 518, 529, 547, 2909], [0, 547, 529, 576, 2911], [0, 576, 529, 605, 2913], [0, 605, 529, 633, 2915], [0, 633, 529, 662, 2917], [0, 662, 529, 691, 2919], [0, 691, 529, 720, 2921], [0, 720, 529, 740, 2923]], [[0, 0, 528, 29, 2945], [0, 57, 528, 86, 2949], [0, 86, 528, 115, 2951], [0, 115, 528, 144, 2953], [0, 144, 528, 173, 2955], [0, 173, 528, 202, 2957], [0, 201, 528, 230, 2959], [0, 230, 528, 259, 2961], [0, 259, 528, 288, 2963], [0, 288, 528, 317, 2965], [0, 317, 528, 346, 2967], [0, 346, 528, 374, 2969], [0, 374, 528, 403, 2971], [0, 403, 528, 432, 2973], [0, 432, 528, 461, 2975], [0, 461, 528, 490, 2977], [0, 490, 528, 518, 2979], [0, 518, 528, 547, 2981], [0, 547, 528, 576, 2983], [0, 576, 528, 605, 2985], [0, 605, 528, 634, 2987], [0, 634, 528, 662, 2989], [0, 662, 528, 691, 2991], [0, 720, 528, 736, 2995]], [[0, 0, 519, 29, 3017], [0, 58, 519, 88, 3021], [0, 88, 519, 117, 3023], [0, 117, 519, 147, 3025], [0, 147, 519, 176, 3027], [0, 176, 519, 205, 3029], [0, 205, 519, 235, 3031], [0, 235, 519, 264, 3033], [0, 264, 519, 294, 3035], [0, 294, 519, 323, 3037], [0, 323, 519, 352, 3039], [0, 352, 519, 382, 3041], [0, 382, 519, 411, 3043], [0, 411, 519, 441, 3045], [0, 441, 519, 470, 3047], [0, 470, 519, 499, 3049], [0, 499, 519, 529, 3051], [0, 529, 519, 558, 3053], [0, 558, 519, 588, 3055], [0, 588, 519, 617, 3057], [0, 617, 519, 646, 3059], [0, 646, 519, 676, 3061], [0, 676, 519, 705, 3063], [0, 705, 519, 734, 3065]], [[0, 0, 519, 29, 3087], [0, 29, 519, 58, 3089], [0, 57, 519, 86, 3091], [0, 86, 519, 115, 3093], [0, 115, 519, 144, 3095], [0, 144, 519, 173, 3097], [0, 173, 519, 202, 3099], [0, 201, 519, 230, 3101], [0, 230, 519, 259, 3103], [0, 259, 519, 288, 3105], [0, 288, 519, 317, 3107], [0, 317, 519, 346, 3109], [0, 346, 519, 374, 3111], [0, 374, 519, 403, 3113], [0, 403, 519, 432, 3115], [0, 432, 519, 461, 3117], [0, 461, 519, 490, 3119], [0, 490, 519, 518, 3121], [0, 518, 519, 547, 3123], [0, 547, 519, 576, 3125], [0, 576, 519, 605, 3127], [0, 605, 519, 634, 3129], [0, 634, 519, 662, 3131], [0, 662, 519, 691, 3133], [0, 691, 519, 720, 3135]], [[0, 0, 529, 29, 3157], [0, 57, 529, 86, 3161], [0, 86, 529, 115, 3163], [0, 115, 529, 144, 3165], [0, 144, 529, 173, 3167], [0, 172, 529, 201, 3169], [0, 201, 529, 230, 3171], [0, 230, 529, 259, 3173], [0, 259, 529, 288, 3175], [0, 288, 529, 317, 3177], [0, 317, 529, 345, 3179], [0, 345, 529, 374, 3181], [0, 374, 529, 403, 3183], [0, 403, 529, 432, 3185], [0, 432, 529, 461, 3187], [0, 461, 529, 489, 3189], [0, 489, 529, 518, 3191], [0, 518, 529, 547, 3193], [0, 547, 529, 576, 3195], [0, 576, 529, 605, 3197], [0, 605, 529, 633, 3199], [0, 633, 529, 662, 3201], [0, 662, 529, 691, 3203], [0, 720, 529, 740, 3207]], [[0, 0, 525, 29, 3229], [0, 29, 525, 58, 3231], [0, 57, 525, 86, 3233], [0, 86, 525, 115, 3235], [0, 115, 525, 144, 3237], [0, 144, 525, 173, 3239], [0, 173, 525, 202, 3241], [0, 201, 525, 230, 3243], [0, 230, 525, 259, 3245], [0, 259, 525, 288, 3247], [0, 288, 525, 317, 3249], [0, 317, 525, 346, 3251], [0, 346, 525, 374, 3253], [0, 374, 525, 403, 3255], [0, 403, 525, 432, 3257], [0, 432, 525, 461, 3259], [0, 461, 525, 490, 3261], [0, 490, 525, 518, 3263], [0, 518, 525, 547, 3265], [0, 547, 525, 576, 3267], [0, 576, 525, 605, 3269], [0, 605, 525, 634, 3271], [0, 634, 525, 662, 3273], [0, 662, 525, 691, 3275], [0, 720, 525, 736, 3279]], [[0, 0, 523, 28, 3301], [0, 56, 523, 85, 3305], [0, 85, 523, 113, 3307], [0, 113, 523, 142, 3309], [0, 142, 523, 170, 3311], [0, 170, 523, 199, 3313], [0, 199, 523, 227, 3315], [0, 227, 523, 256, 3317], [0, 256, 523, 284, 3319], [0, 284, 523, 313, 3321], [0, 313, 523, 341, 3323], [0, 341, 523, 370, 3325], [0, 370, 523, 398, 3327], [0, 398, 523, 427, 3329], [0, 427, 523, 455, 3331], [0, 455, 523, 484, 3333], [0, 484, 523, 512, 3335], [0, 512, 523, 541, 3337], [0, 541, 523, 569, 3339], [0, 569, 523, 598, 3341], [0, 598, 523, 626, 3343], [0, 626, 523, 655, 3345], [0, 655, 523, 683, 3347]], [[0, 0, 519, 29, 3371], [0, 58, 519, 88, 3375], [0, 88, 519, 117, 3377], [0, 117, 519, 147, 3379], [0, 147, 519, 176, 3381], [0, 176, 519, 205, 3383], [0, 205, 519, 235, 3385], [0, 235, 519, 264, 3387], [0, 264, 519, 294, 3389], [0, 294, 519, 323, 3391], [0, 323, 519, 352, 3393], [0, 352, 519, 382, 3395], [0, 382, 519, 411, 3397], [0, 411, 519, 441, 3399], [0, 441, 519, 470, 3401], [0, 470, 519, 499, 3403], [0, 499, 519, 529, 3405], [0, 529, 519, 558, 3407], [0, 558, 519, 588, 3409], [0, 588, 519, 617, 3411], [0, 617, 519, 646, 3413], [0, 646, 519, 676, 3415], [0, 676, 519, 705, 3417], [0, 705, 519, 734, 3419]], [[0, 0, 527, 28, 3441], [0, 28, 527, 57, 3443], [0, 57, 527, 86, 3445], [0, 86, 527, 115, 3447], [0, 114, 527, 143, 3449], [0, 143, 527, 172, 3451], [0, 172, 527, 201, 3453], [0, 201, 527, 230, 3455], [0, 230, 527, 259, 3457], [0, 259, 527, 287, 3459], [0, 287, 527, 316, 3461], [0, 316, 527, 345, 3463], [0, 345, 527, 374, 3465], [0, 374, 527, 403, 3467], [0, 403, 527, 431, 3469], [0, 431, 527, 460, 3471], [0, 460, 527, 489, 3473], [0, 489, 527, 518, 3475], [0, 518, 527, 547, 3477], [0, 547, 527, 575, 3479], [0, 575, 527, 604, 3481], [0, 604, 527, 633, 3483], [0, 633, 527, 662, 3485], [0, 662, 527, 691, 3487], [0, 691, 527, 719, 3489], [0, 719, 527, 737, 3491]], [[0, 0, 519, 29, 3513], [0, 29, 519, 58, 3515], [0, 58, 519, 88, 3517], [0, 88, 519, 117, 3519], [0, 117, 519, 147, 3521], [0, 147, 519, 176, 3523], [0, 176, 519, 205, 3525], [0, 205, 519, 235, 3527], [0, 235, 519, 264, 3529], [0, 264, 519, 294, 3531], [0, 294, 519, 323, 3533], [0, 323, 519, 352, 3535], [0, 352, 519, 382, 3537], [0, 382, 519, 411, 3539], [0, 411, 519, 441, 3541], [0, 441, 519, 470, 3543], [0, 470, 519, 499, 3545], [0, 499, 519, 529, 3547], [0, 529, 519, 558, 3549], [0, 558, 519, 588, 3551], [0, 588, 519, 617, 3553], [0, 617, 519, 646, 3555], [0, 646, 519, 676, 3557], [0, 676, 519, 705, 3559], [0, 705, 519, 734, 3561]], [[0, 0, 527, 29, 3583], [0, 29, 527, 58, 3585], [0, 57, 527, 86, 3587], [0, 86, 527, 115, 3589], [0, 115, 527, 144, 3591], [0, 144, 527, 173, 3593], [0, 173, 527, 202, 3595], [0, 201, 527, 230, 3597], [0, 230, 527, 259, 3599], [0, 259, 527, 288, 3601], [0, 288, 527, 317, 3603], [0, 317, 527, 346, 3605], [0, 346, 527, 374, 3607], [0, 374, 527, 403, 3609], [0, 403, 527, 432, 3611], [0, 432, 527, 461, 3613], [0, 461, 527, 490, 3615], [0, 490, 527, 518, 3617], [0, 518, 527, 547, 3619], [0, 576, 527, 605, 3623], [0, 605, 527, 634, 3625], [0, 634, 527, 662, 3627], [0, 662, 527, 691, 3629], [0, 720, 527, 738, 3633]]], - "expected_junk_img_bojids": [] - }, - "the_eye/the_eye_wtl_00023799" : { - "expected_image_info": [[[0, 0, 610, 55, 6500], [0, 55, 610, 110, 6502], [0, 110, 610, 166, 6504], [0, 166, 610, 221, 6506], [0, 221, 610, 276, 6508], [0, 276, 610, 332, 6510], [0, 332, 610, 387, 6512], [0, 387, 610, 443, 6514], [0, 443, 610, 498, 6516], [0, 498, 610, 554, 6518], [0, 554, 610, 609, 6520], [0, 609, 610, 664, 6522], [0, 664, 610, 720, 6524], [0, 720, 610, 775, 6526], [0, 775, 610, 783, 6528]], [[0, 0, 616, 54, 37], [0, 54, 616, 108, 39], [0, 108, 616, 163, 41], [0, 163, 616, 217, 43], [0, 217, 616, 272, 45], [0, 272, 616, 326, 47], [0, 326, 616, 381, 49], [0, 381, 616, 435, 51], [0, 435, 616, 490, 53], [0, 490, 616, 544, 55], [0, 544, 616, 599, 57], [0, 599, 616, 653, 59], [0, 653, 616, 708, 61], [0, 708, 616, 762, 63], [0, 762, 616, 790, 65]], [[0, 0, 619, 54, 102], [0, 54, 619, 109, 104], [0, 109, 619, 163, 106], [0, 163, 619, 218, 108], [0, 218, 619, 272, 110], [0, 272, 619, 327, 112], [0, 327, 619, 381, 114], [0, 381, 619, 435, 116], [0, 435, 619, 490, 118], [0, 490, 619, 544, 120], [0, 544, 619, 599, 122], [0, 599, 619, 653, 124], [0, 653, 619, 708, 126], [0, 708, 619, 762, 128], [0, 762, 619, 791, 130]], [[0, 0, 616, 54, 167], [0, 54, 616, 108, 169], [0, 108, 616, 163, 171], [0, 163, 616, 217, 173], [0, 217, 616, 272, 175], [0, 272, 616, 326, 177], [0, 326, 616, 381, 179], [0, 381, 616, 435, 181], [0, 435, 616, 490, 183], [0, 490, 616, 544, 185], [0, 544, 616, 599, 187], [0, 599, 616, 653, 189], [0, 653, 616, 708, 191], [0, 708, 616, 762, 193], [0, 762, 616, 787, 195]], [[0, 0, 610, 55, 232], [0, 55, 610, 111, 234], [0, 111, 610, 166, 236], [0, 166, 610, 222, 238], [0, 222, 610, 278, 240], [0, 278, 610, 333, 242], [0, 333, 610, 389, 244], [0, 389, 610, 445, 246], [0, 445, 610, 501, 248], [0, 501, 610, 556, 250], [0, 556, 610, 612, 252], [0, 612, 610, 668, 254], [0, 668, 610, 723, 256], [0, 723, 610, 779, 258], [0, 779, 610, 786, 260]], [[0, 0, 610, 55, 297], [0, 55, 610, 111, 299], [0, 111, 610, 166, 301], [0, 166, 610, 221, 303], [0, 221, 610, 277, 305], [0, 277, 610, 332, 307], [0, 332, 610, 388, 309], [0, 388, 610, 443, 311], [0, 443, 610, 499, 313], [0, 499, 610, 554, 315], [0, 554, 610, 610, 317], [0, 610, 610, 665, 319], [0, 665, 610, 720, 321], [0, 720, 610, 776, 323], [0, 776, 610, 783, 325]], [[0, 0, 789, 42, 362], [0, 42, 789, 85, 364], [0, 85, 789, 127, 366], [0, 127, 789, 170, 368], [0, 170, 789, 213, 370], [0, 213, 789, 256, 372], [0, 256, 789, 298, 374], [0, 298, 789, 341, 376], [0, 341, 789, 384, 378], [0, 384, 789, 427, 380], [0, 427, 789, 469, 382], [0, 469, 789, 512, 384], [0, 512, 789, 555, 386], [0, 555, 789, 597, 388], [0, 597, 789, 619, 390]], [[0, 0, 610, 55, 427], [0, 55, 610, 110, 429], [0, 110, 610, 166, 431], [0, 166, 610, 221, 433], [0, 221, 610, 276, 435], [0, 276, 610, 332, 437], [0, 332, 610, 387, 439], [0, 387, 610, 443, 441], [0, 443, 610, 498, 443], [0, 498, 610, 554, 445], [0, 554, 610, 609, 447], [0, 609, 610, 664, 449], [0, 664, 610, 720, 451], [0, 720, 610, 775, 453], [0, 775, 610, 783, 455]], [[0, 0, 619, 54, 492], [0, 54, 619, 108, 494], [0, 108, 619, 163, 496], [0, 163, 619, 217, 498], [0, 217, 619, 272, 500], [0, 272, 619, 326, 502], [0, 326, 619, 381, 504], [0, 381, 619, 435, 506], [0, 435, 619, 490, 508], [0, 490, 619, 544, 510], [0, 544, 619, 599, 512], [0, 599, 619, 653, 514], [0, 653, 619, 708, 516], [0, 708, 619, 762, 518], [0, 762, 619, 790, 520]], [[0, 0, 610, 55, 557], [0, 55, 610, 111, 559], [0, 111, 610, 166, 561], [0, 166, 610, 222, 563], [0, 222, 610, 277, 565], [0, 277, 610, 333, 567], [0, 333, 610, 388, 569], [0, 388, 610, 443, 571], [0, 443, 610, 499, 573], [0, 499, 610, 554, 575], [0, 554, 610, 610, 577], [0, 610, 610, 665, 579], [0, 665, 610, 721, 581], [0, 721, 610, 776, 583], [0, 776, 610, 783, 585]], [[0, 0, 610, 55, 622], [0, 55, 610, 110, 624], [0, 110, 610, 166, 626], [0, 166, 610, 221, 628], [0, 221, 610, 276, 630], [0, 276, 610, 332, 632], [0, 332, 610, 387, 634], [0, 387, 610, 443, 636], [0, 443, 610, 498, 638], [0, 498, 610, 554, 640], [0, 554, 610, 609, 642], [0, 609, 610, 664, 644], [0, 664, 610, 720, 646], [0, 720, 610, 775, 648], [0, 775, 610, 783, 650]], [[0, 0, 610, 55, 687], [0, 55, 610, 111, 689], [0, 111, 610, 166, 691], [0, 166, 610, 222, 693], [0, 222, 610, 278, 695], [0, 278, 610, 333, 697], [0, 333, 610, 389, 699], [0, 389, 610, 445, 701], [0, 445, 610, 501, 703], [0, 501, 610, 556, 705], [0, 556, 610, 612, 707], [0, 612, 610, 668, 709], [0, 668, 610, 723, 711], [0, 723, 610, 779, 713], [0, 779, 610, 786, 715]], [[0, 0, 610, 55, 752], [0, 55, 610, 111, 754], [0, 111, 610, 166, 756], [0, 166, 610, 222, 758], [0, 222, 610, 278, 760], [0, 278, 610, 333, 762], [0, 333, 610, 389, 764], [0, 389, 610, 445, 766], [0, 445, 610, 501, 768], [0, 501, 610, 556, 770], [0, 556, 610, 612, 772], [0, 612, 610, 668, 774], [0, 668, 610, 723, 776], [0, 723, 610, 779, 778], [0, 779, 610, 786, 780]], [[0, 0, 610, 55, 817], [0, 55, 610, 111, 819], [0, 111, 610, 166, 821], [0, 166, 610, 221, 823], [0, 221, 610, 277, 825], [0, 277, 610, 332, 827], [0, 332, 610, 388, 829], [0, 388, 610, 443, 831], [0, 443, 610, 499, 833], [0, 499, 610, 554, 835], [0, 554, 610, 610, 837], [0, 610, 610, 665, 839], [0, 665, 610, 720, 841], [0, 720, 610, 776, 843], [0, 776, 610, 783, 845]], [[0, 0, 610, 55, 882], [0, 55, 610, 111, 884], [0, 111, 610, 166, 886], [0, 166, 610, 222, 888], [0, 222, 610, 277, 890], [0, 277, 610, 333, 892], [0, 333, 610, 388, 894], [0, 388, 610, 443, 896], [0, 443, 610, 499, 898], [0, 499, 610, 554, 900], [0, 554, 610, 610, 902], [0, 610, 610, 665, 904], [0, 665, 610, 721, 906], [0, 721, 610, 776, 908], [0, 776, 610, 783, 910]], [[0, 0, 610, 55, 947], [0, 55, 610, 111, 949], [0, 111, 610, 166, 951], [0, 166, 610, 222, 953], [0, 222, 610, 277, 955], [0, 277, 610, 333, 957], [0, 333, 610, 388, 959], [0, 388, 610, 443, 961], [0, 443, 610, 499, 963], [0, 499, 610, 554, 965], [0, 554, 610, 610, 967], [0, 610, 610, 665, 969], [0, 665, 610, 721, 971], [0, 721, 610, 776, 973], [0, 776, 610, 783, 975]], [[0, 0, 610, 55, 1012], [0, 55, 610, 110, 1014], [0, 110, 610, 166, 1016], [0, 166, 610, 221, 1018], [0, 221, 610, 276, 1020], [0, 276, 610, 332, 1022], [0, 332, 610, 387, 1024], [0, 387, 610, 443, 1026], [0, 443, 610, 498, 1028], [0, 498, 610, 554, 1030], [0, 554, 610, 609, 1032], [0, 609, 610, 664, 1034], [0, 664, 610, 720, 1036], [0, 720, 610, 775, 1038], [0, 775, 610, 783, 1040]], [[0, 0, 610, 55, 1077], [0, 55, 610, 111, 1079], [0, 111, 610, 166, 1081], [0, 166, 610, 222, 1083], [0, 222, 610, 278, 1085], [0, 278, 610, 333, 1087], [0, 333, 610, 389, 1089], [0, 389, 610, 445, 1091], [0, 445, 610, 501, 1093], [0, 501, 610, 556, 1095], [0, 556, 610, 612, 1097], [0, 612, 610, 668, 1099], [0, 668, 610, 723, 1101], [0, 723, 610, 779, 1103], [0, 779, 610, 786, 1105]], [[0, 0, 610, 55, 1142], [0, 55, 610, 110, 1144], [0, 110, 610, 166, 1146], [0, 166, 610, 221, 1148], [0, 221, 610, 276, 1150], [0, 276, 610, 332, 1152], [0, 332, 610, 387, 1154], [0, 387, 610, 443, 1156], [0, 443, 610, 498, 1158], [0, 498, 610, 554, 1160], [0, 554, 610, 609, 1162], [0, 609, 610, 664, 1164], [0, 664, 610, 720, 1166], [0, 720, 610, 775, 1168], [0, 775, 610, 783, 1170]], [[0, 0, 622, 54, 1207], [0, 54, 622, 108, 1209], [0, 108, 622, 163, 1211], [0, 163, 622, 217, 1213], [0, 217, 622, 272, 1215], [0, 272, 622, 326, 1217], [0, 326, 622, 381, 1219], [0, 381, 622, 435, 1221], [0, 435, 622, 490, 1223], [0, 490, 622, 544, 1225], [0, 544, 622, 599, 1227], [0, 599, 622, 653, 1229], [0, 653, 622, 708, 1231], [0, 708, 622, 762, 1233], [0, 762, 622, 793, 1235]], [[0, 0, 619, 54, 1272], [0, 54, 619, 109, 1274], [0, 109, 619, 163, 1276], [0, 163, 619, 218, 1278], [0, 218, 619, 272, 1280], [0, 272, 619, 327, 1282], [0, 327, 619, 381, 1284], [0, 381, 619, 435, 1286], [0, 435, 619, 490, 1288], [0, 490, 619, 544, 1290], [0, 544, 619, 599, 1292], [0, 599, 619, 653, 1294], [0, 653, 619, 708, 1296], [0, 708, 619, 762, 1298], [0, 762, 619, 791, 1300]], [[0, 0, 610, 55, 1337], [0, 55, 610, 111, 1339], [0, 111, 610, 166, 1341], [0, 166, 610, 222, 1343], [0, 222, 610, 278, 1345], [0, 278, 610, 333, 1347], [0, 333, 610, 389, 1349], [0, 389, 610, 445, 1351], [0, 445, 610, 501, 1353], [0, 501, 610, 556, 1355], [0, 556, 610, 612, 1357], [0, 612, 610, 668, 1359], [0, 668, 610, 723, 1361], [0, 723, 610, 779, 1363], [0, 779, 610, 786, 1365]], [[0, 0, 616, 54, 1402], [0, 54, 616, 108, 1404], [0, 108, 616, 163, 1406], [0, 163, 616, 217, 1408], [0, 217, 616, 272, 1410], [0, 272, 616, 326, 1412], [0, 326, 616, 381, 1414], [0, 381, 616, 435, 1416], [0, 435, 616, 490, 1418], [0, 490, 616, 544, 1420], [0, 544, 616, 599, 1422], [0, 599, 616, 653, 1424], [0, 653, 616, 708, 1426], [0, 708, 616, 762, 1428], [0, 762, 616, 790, 1430]], [[0, 0, 616, 54, 1467], [0, 54, 616, 109, 1469], [0, 109, 616, 163, 1471], [0, 163, 616, 218, 1473], [0, 218, 616, 272, 1475], [0, 272, 616, 327, 1477], [0, 327, 616, 381, 1479], [0, 381, 616, 436, 1481], [0, 436, 616, 490, 1483], [0, 490, 616, 545, 1485], [0, 545, 616, 599, 1487], [0, 599, 616, 653, 1489], [0, 653, 616, 708, 1491], [0, 708, 616, 762, 1493], [0, 762, 616, 791, 1495]], [[0, 0, 610, 55, 1532], [0, 55, 610, 111, 1534], [0, 111, 610, 166, 1536], [0, 166, 610, 221, 1538], [0, 221, 610, 277, 1540], [0, 277, 610, 332, 1542], [0, 332, 610, 388, 1544], [0, 388, 610, 443, 1546], [0, 443, 610, 499, 1548], [0, 499, 610, 554, 1550], [0, 554, 610, 610, 1552], [0, 610, 610, 665, 1554], [0, 665, 610, 720, 1556], [0, 720, 610, 776, 1558], [0, 776, 610, 783, 1560]], [[0, 0, 616, 54, 1597], [0, 54, 616, 108, 1599], [0, 108, 616, 163, 1601], [0, 163, 616, 217, 1603], [0, 217, 616, 272, 1605], [0, 272, 616, 326, 1607], [0, 326, 616, 381, 1609], [0, 381, 616, 435, 1611], [0, 435, 616, 490, 1613], [0, 490, 616, 544, 1615], [0, 544, 616, 599, 1617], [0, 599, 616, 653, 1619], [0, 653, 616, 708, 1621], [0, 708, 616, 762, 1623], [0, 762, 616, 787, 1625]], [[0, 0, 619, 54, 1662], [0, 54, 619, 109, 1664], [0, 109, 619, 163, 1666], [0, 163, 619, 218, 1668], [0, 218, 619, 272, 1670], [0, 272, 619, 327, 1672], [0, 327, 619, 381, 1674], [0, 381, 619, 435, 1676], [0, 435, 619, 490, 1678], [0, 490, 619, 544, 1680], [0, 544, 619, 599, 1682], [0, 599, 619, 653, 1684], [0, 653, 619, 708, 1686], [0, 708, 619, 762, 1688], [0, 762, 619, 791, 1690]], [[0, 0, 610, 56, 1727], [0, 56, 610, 111, 1729], [0, 111, 610, 167, 1731], [0, 167, 610, 223, 1733], [0, 223, 610, 278, 1735], [0, 278, 610, 334, 1737], [0, 334, 610, 390, 1739], [0, 390, 610, 445, 1741], [0, 445, 610, 501, 1743], [0, 501, 610, 557, 1745], [0, 557, 610, 612, 1747], [0, 612, 610, 668, 1749], [0, 668, 610, 724, 1751], [0, 724, 610, 780, 1753], [0, 780, 610, 787, 1755]], [[0, 0, 622, 54, 1792], [0, 54, 622, 109, 1794], [0, 108, 622, 163, 1796], [0, 163, 622, 217, 1798], [0, 217, 622, 272, 1800], [0, 272, 622, 326, 1802], [0, 326, 622, 381, 1804], [0, 381, 622, 435, 1806], [0, 435, 622, 490, 1808], [0, 490, 622, 544, 1810], [0, 544, 622, 599, 1812], [0, 599, 622, 653, 1814], [0, 653, 622, 708, 1816], [0, 708, 622, 762, 1818], [0, 762, 622, 793, 1820]], [[0, 0, 791, 42, 1857], [0, 42, 791, 85, 1859], [0, 85, 791, 127, 1861], [0, 127, 791, 170, 1863], [0, 170, 791, 213, 1865], [0, 213, 791, 255, 1867], [0, 255, 791, 298, 1869], [0, 298, 791, 341, 1871], [0, 341, 791, 384, 1873], [0, 384, 791, 426, 1875], [0, 426, 791, 469, 1877], [0, 469, 791, 512, 1879], [0, 512, 791, 554, 1881], [0, 597, 791, 622, 1885]], [[0, 0, 610, 55, 1922], [0, 55, 610, 111, 1924], [0, 111, 610, 166, 1926], [0, 166, 610, 222, 1928], [0, 222, 610, 277, 1930], [0, 277, 610, 333, 1932], [0, 333, 610, 388, 1934], [0, 388, 610, 443, 1936], [0, 443, 610, 499, 1938], [0, 499, 610, 554, 1940], [0, 554, 610, 610, 1942], [0, 610, 610, 665, 1944], [0, 665, 610, 721, 1946], [0, 721, 610, 776, 1948], [0, 776, 610, 783, 1950]], [[0, 0, 610, 55, 1987], [0, 55, 610, 110, 1989], [0, 110, 610, 166, 1991], [0, 166, 610, 221, 1993], [0, 221, 610, 276, 1995], [0, 276, 610, 332, 1997], [0, 332, 610, 387, 1999], [0, 387, 610, 443, 2001], [0, 443, 610, 498, 2003], [0, 498, 610, 554, 2005], [0, 554, 610, 609, 2007], [0, 609, 610, 664, 2009], [0, 664, 610, 720, 2011], [0, 720, 610, 775, 2013], [0, 775, 610, 783, 2015]], [[0, 0, 610, 55, 2052], [0, 55, 610, 111, 2054], [0, 111, 610, 166, 2056], [0, 166, 610, 221, 2058], [0, 221, 610, 277, 2060], [0, 277, 610, 332, 2062], [0, 332, 610, 388, 2064], [0, 388, 610, 443, 2066], [0, 443, 610, 499, 2068], [0, 499, 610, 554, 2070], [0, 554, 610, 610, 2072], [0, 610, 610, 665, 2074], [0, 665, 610, 720, 2076], [0, 720, 610, 776, 2078], [0, 776, 610, 783, 2080]], [[0, 0, 618, 54, 2117], [0, 54, 618, 109, 2119], [0, 109, 618, 163, 2121], [0, 163, 618, 218, 2123], [0, 218, 618, 272, 2125], [0, 272, 618, 327, 2127], [0, 327, 618, 381, 2129], [0, 381, 618, 436, 2131], [0, 436, 618, 490, 2133], [0, 490, 618, 545, 2135], [0, 545, 618, 599, 2137], [0, 599, 618, 654, 2139], [0, 654, 618, 708, 2141], [0, 708, 618, 763, 2143], [0, 763, 618, 791, 2145]], [[0, 0, 619, 54, 2182], [0, 54, 619, 108, 2184], [0, 108, 619, 163, 2186], [0, 163, 619, 217, 2188], [0, 217, 619, 272, 2190], [0, 272, 619, 326, 2192], [0, 326, 619, 381, 2194], [0, 381, 619, 435, 2196], [0, 435, 619, 489, 2198], [0, 489, 619, 544, 2200], [0, 544, 619, 598, 2202], [0, 598, 619, 653, 2204], [0, 653, 619, 707, 2206], [0, 707, 619, 762, 2208], [0, 762, 619, 790, 2210]], [[0, 0, 616, 54, 2247], [0, 53, 616, 108, 2249], [0, 108, 616, 162, 2251], [0, 162, 616, 217, 2253], [0, 217, 616, 271, 2255], [0, 271, 616, 326, 2257], [0, 326, 616, 380, 2259], [0, 380, 616, 435, 2261], [0, 435, 616, 489, 2263], [0, 489, 616, 544, 2265], [0, 544, 616, 598, 2267], [0, 598, 616, 653, 2269], [0, 653, 616, 707, 2271], [0, 707, 616, 762, 2273], [0, 762, 616, 790, 2275]], [[0, 0, 610, 55, 2312], [0, 55, 610, 111, 2314], [0, 111, 610, 166, 2316], [0, 166, 610, 222, 2318], [0, 222, 610, 277, 2320], [0, 277, 610, 333, 2322], [0, 333, 610, 388, 2324], [0, 388, 610, 443, 2326], [0, 443, 610, 499, 2328], [0, 499, 610, 554, 2330], [0, 554, 610, 610, 2332], [0, 610, 610, 665, 2334], [0, 665, 610, 721, 2336], [0, 721, 610, 776, 2338], [0, 776, 610, 783, 2340]], [[0, 0, 627, 53, 2377], [0, 53, 627, 106, 2379], [0, 106, 627, 160, 2381], [0, 160, 627, 213, 2383], [0, 213, 627, 266, 2385], [0, 266, 627, 320, 2387], [0, 320, 627, 373, 2389], [0, 373, 627, 426, 2391], [0, 426, 627, 479, 2393], [0, 479, 627, 533, 2395], [0, 533, 627, 586, 2397], [0, 586, 627, 639, 2399], [0, 639, 627, 693, 2401], [0, 693, 627, 746, 2403], [0, 746, 627, 795, 2405]], [[0, 0, 610, 55, 2442], [0, 55, 610, 111, 2444], [0, 111, 610, 166, 2446], [0, 166, 610, 221, 2448], [0, 221, 610, 277, 2450], [0, 277, 610, 332, 2452], [0, 332, 610, 388, 2454], [0, 388, 610, 443, 2456], [0, 443, 610, 499, 2458], [0, 499, 610, 554, 2460], [0, 554, 610, 610, 2462], [0, 610, 610, 665, 2464], [0, 665, 610, 720, 2466], [0, 720, 610, 776, 2468], [0, 776, 610, 783, 2470]], [[0, 0, 610, 55, 2507], [0, 55, 610, 110, 2509], [0, 110, 610, 166, 2511], [0, 166, 610, 221, 2513], [0, 221, 610, 276, 2515], [0, 276, 610, 332, 2517], [0, 332, 610, 387, 2519], [0, 387, 610, 443, 2521], [0, 443, 610, 498, 2523], [0, 498, 610, 554, 2525], [0, 554, 610, 609, 2527], [0, 609, 610, 664, 2529], [0, 664, 610, 720, 2531], [0, 720, 610, 775, 2533], [0, 775, 610, 783, 2535]], [[0, 0, 616, 54, 2572], [0, 54, 616, 108, 2574], [0, 108, 616, 163, 2576], [0, 163, 616, 217, 2578], [0, 217, 616, 272, 2580], [0, 272, 616, 326, 2582], [0, 326, 616, 381, 2584], [0, 381, 616, 435, 2586], [0, 435, 616, 489, 2588], [0, 489, 616, 544, 2590], [0, 544, 616, 598, 2592], [0, 598, 616, 653, 2594], [0, 653, 616, 707, 2596], [0, 707, 616, 762, 2598], [0, 762, 616, 790, 2600]], [[0, 0, 616, 54, 2637], [0, 54, 616, 109, 2639], [0, 109, 616, 163, 2641], [0, 163, 616, 218, 2643], [0, 218, 616, 272, 2645], [0, 272, 616, 327, 2647], [0, 327, 616, 381, 2649], [0, 381, 616, 435, 2651], [0, 435, 616, 490, 2653], [0, 490, 616, 544, 2655], [0, 544, 616, 599, 2657], [0, 599, 616, 653, 2659], [0, 653, 616, 708, 2661], [0, 708, 616, 762, 2663], [0, 762, 616, 791, 2665]], [[0, 0, 619, 54, 2702], [0, 54, 619, 109, 2704], [0, 109, 619, 163, 2706], [0, 163, 619, 218, 2708], [0, 218, 619, 272, 2710], [0, 272, 619, 327, 2712], [0, 327, 619, 381, 2714], [0, 381, 619, 435, 2716], [0, 435, 619, 490, 2718], [0, 490, 619, 544, 2720], [0, 544, 619, 599, 2722], [0, 599, 619, 653, 2724], [0, 653, 619, 708, 2726], [0, 708, 619, 762, 2728], [0, 762, 619, 791, 2730]], [[0, 0, 616, 54, 2767], [0, 54, 616, 109, 2769], [0, 109, 616, 163, 2771], [0, 163, 616, 218, 2773], [0, 218, 616, 272, 2775], [0, 272, 616, 327, 2777], [0, 327, 616, 381, 2779], [0, 381, 616, 435, 2781], [0, 435, 616, 490, 2783], [0, 490, 616, 544, 2785], [0, 544, 616, 599, 2787], [0, 599, 616, 653, 2789], [0, 653, 616, 708, 2791], [0, 708, 616, 762, 2793], [0, 762, 616, 791, 2795]], [[0, 0, 610, 55, 2832], [0, 55, 610, 111, 2834], [0, 111, 610, 166, 2836], [0, 166, 610, 222, 2838], [0, 222, 610, 278, 2840], [0, 278, 610, 333, 2842], [0, 333, 610, 389, 2844], [0, 389, 610, 445, 2846], [0, 445, 610, 501, 2848], [0, 501, 610, 556, 2850], [0, 556, 610, 612, 2852], [0, 612, 610, 668, 2854], [0, 668, 610, 723, 2856], [0, 723, 610, 779, 2858], [0, 779, 610, 786, 2860]], [[0, 0, 622, 54, 2897], [0, 54, 622, 109, 2899], [0, 108, 622, 163, 2901], [0, 163, 622, 217, 2903], [0, 217, 622, 272, 2905], [0, 272, 622, 326, 2907], [0, 326, 622, 381, 2909], [0, 381, 622, 435, 2911], [0, 435, 622, 490, 2913], [0, 490, 622, 544, 2915], [0, 544, 622, 599, 2917], [0, 599, 622, 653, 2919], [0, 653, 622, 708, 2921], [0, 708, 622, 762, 2923], [0, 762, 622, 793, 2925]], [[0, 0, 624, 53, 2962], [0, 53, 624, 107, 2964], [0, 107, 624, 160, 2966], [0, 160, 624, 214, 2968], [0, 214, 624, 267, 2970], [0, 267, 624, 321, 2972], [0, 321, 624, 374, 2974], [0, 374, 624, 428, 2976], [0, 428, 624, 481, 2978], [0, 481, 624, 535, 2980], [0, 535, 624, 588, 2982], [0, 588, 624, 642, 2984], [0, 642, 624, 695, 2986], [0, 695, 624, 749, 2988], [0, 749, 624, 798, 2990]], [[0, 0, 619, 54, 3027], [0, 54, 619, 108, 3029], [0, 108, 619, 163, 3031], [0, 163, 619, 217, 3033], [0, 217, 619, 272, 3035], [0, 272, 619, 326, 3037], [0, 326, 619, 381, 3039], [0, 381, 619, 435, 3041], [0, 435, 619, 489, 3043], [0, 489, 619, 544, 3045], [0, 544, 619, 598, 3047], [0, 598, 619, 653, 3049], [0, 653, 619, 707, 3051], [0, 707, 619, 762, 3053], [0, 762, 619, 790, 3055]], [[0, 0, 619, 54, 3092], [0, 54, 619, 109, 3094], [0, 109, 619, 163, 3096], [0, 163, 619, 218, 3098], [0, 218, 619, 272, 3100], [0, 272, 619, 327, 3102], [0, 327, 619, 381, 3104], [0, 381, 619, 435, 3106], [0, 435, 619, 490, 3108], [0, 490, 619, 544, 3110], [0, 544, 619, 599, 3112], [0, 599, 619, 653, 3114], [0, 653, 619, 708, 3116], [0, 708, 619, 762, 3118], [0, 762, 619, 791, 3120]], [[0, 0, 610, 55, 3157], [0, 55, 610, 111, 3159], [0, 111, 610, 166, 3161], [0, 166, 610, 221, 3163], [0, 221, 610, 277, 3165], [0, 277, 610, 332, 3167], [0, 332, 610, 388, 3169], [0, 388, 610, 443, 3171], [0, 443, 610, 499, 3173], [0, 499, 610, 554, 3175], [0, 554, 610, 610, 3177], [0, 610, 610, 665, 3179], [0, 665, 610, 720, 3181], [0, 720, 610, 776, 3183], [0, 776, 610, 783, 3185]]], - "expected_junk_img_bojids": [] - }, - "vertical_detection/三国演义_繁体竖排版" : { - "expected_text_layout": [ - "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical" - ] - }, - "vertical_detection/净空法师_大乘无量寿" : { - "expected_text_layout" : [ - "vertical", "unknow", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical", "vertical" - ] - }, - "vertical_detection/om3006239" : { - "expected_text_layout" : [ - "horizontal", "horizontal", "horizontal", "horizontal", "horizontal", "horizontal", "horizontal", "horizontal", "horizontal", "horizontal" - ] - }, - "vertical_detection/isit.2006.261791" : { - "expected_text_layout" : [ - "horizontal", "horizontal", "horizontal", "horizontal", "horizontal" - ] - }, - "the_eye/the_eye_cdn_00328381" : { - "expected_image_info": [[[0, 0, 405, 36, 11428], [0, 73, 405, 110, 11429], [0, 147, 405, 184, 11430], [0, 184, 405, 222, 11431], [0, 222, 405, 258, 11432], [0, 258, 405, 295, 11433], [0, 295, 405, 333, 11434], [0, 333, 405, 369, 11435], [0, 369, 405, 406, 11436], [0, 406, 405, 444, 11437], [0, 444, 405, 480, 11438], [0, 517, 405, 555, 11439]], [[0, 0, 402, 37, 9852], [0, 555, 402, 592, 4], [0, 592, 402, 628, 5]], [[0, 0, 396, 38, 9854], [0, 38, 396, 76, 10], [0, 76, 396, 114, 11], [0, 114, 396, 152, 12], [0, 152, 396, 191, 13], [0, 191, 396, 229, 14], [0, 229, 396, 267, 15], [0, 267, 396, 305, 16], [0, 305, 396, 344, 17], [0, 344, 396, 382, 18], [0, 382, 396, 420, 19], [0, 420, 396, 458, 20], [0, 458, 396, 497, 21], [0, 497, 396, 535, 22], [0, 535, 396, 573, 23], [0, 573, 396, 611, 24], [0, 650, 396, 671, 9853]], [[0, 0, 396, 38, 9854], [0, 38, 396, 76, 29], [0, 76, 396, 114, 30], [0, 114, 396, 153, 31], [0, 153, 396, 191, 32], [0, 191, 396, 229, 33], [0, 229, 396, 267, 34], [0, 267, 396, 306, 35], [0, 497, 396, 535, 36], [0, 573, 396, 612, 37], [0, 612, 396, 650, 38], [0, 650, 396, 672, 9853]], [[0, 0, 396, 38, 9854], [0, 38, 396, 76, 43], [0, 76, 396, 114, 44], [0, 114, 396, 153, 45], [0, 153, 396, 191, 46], [0, 191, 396, 229, 47], [0, 229, 396, 267, 48], [0, 267, 396, 306, 49], [0, 306, 396, 344, 50], [0, 344, 396, 382, 51], [0, 382, 396, 420, 52], [0, 420, 396, 459, 53], [0, 459, 396, 497, 54], [0, 497, 396, 535, 55], [0, 535, 396, 573, 56], [0, 573, 396, 612, 57], [0, 612, 396, 650, 58], [0, 650, 396, 672, 9853]], [[0, 0, 396, 38, 63], [0, 38, 396, 76, 64], [0, 76, 396, 114, 65], [0, 114, 396, 152, 66], [0, 152, 396, 191, 67], [0, 191, 396, 229, 68], [0, 229, 396, 267, 69], [0, 267, 396, 305, 70], [0, 305, 396, 344, 71], [0, 344, 396, 382, 72], [0, 382, 396, 420, 73], [0, 420, 396, 458, 74], [0, 458, 396, 497, 75], [0, 497, 396, 535, 76], [0, 535, 396, 573, 9854], [0, 611, 396, 650, 77], [0, 650, 396, 671, 9853]], [[0, 0, 402, 36, 9852], [0, 73, 402, 110, 82], [0, 110, 402, 147, 83], [0, 147, 402, 184, 84], [0, 184, 402, 222, 85], [0, 222, 402, 258, 86], [0, 258, 402, 295, 87], [0, 295, 402, 333, 88], [0, 333, 402, 369, 89], [0, 369, 402, 406, 90], [0, 406, 402, 444, 91], [0, 444, 402, 480, 92], [0, 480, 402, 517, 93], [0, 517, 402, 555, 94], [0, 555, 402, 591, 95], [0, 591, 402, 628, 96]], [[0, 0, 396, 38, 101], [0, 38, 396, 76, 102], [0, 76, 396, 114, 103], [0, 114, 396, 152, 104], [0, 152, 396, 191, 105], [0, 191, 396, 229, 106], [0, 229, 396, 267, 107], [0, 267, 396, 305, 108], [0, 305, 396, 344, 109], [0, 344, 396, 382, 110], [0, 382, 396, 420, 111], [0, 420, 396, 458, 112], [0, 458, 396, 497, 113], [0, 497, 396, 535, 114], [0, 535, 396, 573, 115], [0, 573, 396, 611, 116], [0, 611, 396, 650, 117], [0, 650, 396, 671, 9853]], [[0, 0, 396, 38, 122], [0, 38, 396, 76, 123], [0, 76, 396, 114, 124], [0, 114, 396, 152, 125], [0, 152, 396, 191, 126], [0, 191, 396, 229, 127], [0, 229, 396, 267, 128], [0, 267, 396, 305, 129], [0, 305, 396, 344, 130], [0, 344, 396, 382, 131], [0, 382, 396, 420, 132], [0, 420, 396, 458, 133], [0, 458, 396, 497, 134], [0, 497, 396, 535, 135], [0, 535, 396, 573, 136], [0, 573, 396, 611, 137], [0, 611, 396, 650, 138], [0, 650, 396, 671, 9853]], [[0, 0, 396, 38, 143], [0, 38, 396, 76, 144], [0, 76, 396, 114, 145], [0, 114, 396, 153, 146], [0, 153, 396, 191, 147], [0, 191, 396, 229, 148], [0, 229, 396, 267, 149], [0, 267, 396, 306, 150], [0, 306, 396, 344, 151], [0, 344, 396, 382, 152], [0, 382, 396, 420, 153], [0, 420, 396, 459, 154], [0, 459, 396, 497, 155], [0, 497, 396, 535, 156], [0, 535, 396, 573, 157], [0, 573, 396, 612, 158], [0, 612, 396, 650, 159], [0, 650, 396, 672, 9853]], [[0, 0, 396, 38, 164], [0, 38, 396, 76, 165], [0, 76, 396, 115, 166], [0, 115, 396, 153, 167], [0, 153, 396, 191, 168], [0, 191, 396, 229, 169], [0, 229, 396, 268, 170], [0, 268, 396, 306, 171], [0, 306, 396, 344, 172], [0, 344, 396, 382, 173], [0, 382, 396, 421, 174], [0, 421, 396, 459, 175], [0, 459, 396, 497, 176], [0, 497, 396, 535, 177], [0, 535, 396, 574, 178], [0, 574, 396, 612, 179], [0, 612, 396, 650, 180], [0, 650, 396, 672, 9853]], [[0, 0, 396, 38, 185], [0, 38, 396, 76, 186], [0, 76, 396, 114, 187], [0, 114, 396, 153, 188], [0, 153, 396, 191, 189], [0, 191, 396, 229, 190], [0, 229, 396, 267, 191], [0, 267, 396, 306, 192], [0, 306, 396, 344, 193], [0, 344, 396, 382, 194], [0, 382, 396, 420, 195], [0, 420, 396, 459, 196], [0, 459, 396, 497, 197], [0, 497, 396, 535, 198], [0, 535, 396, 573, 199], [0, 573, 396, 612, 200], [0, 612, 396, 650, 201], [0, 650, 396, 672, 9853]], [[0, 0, 396, 38, 206], [0, 38, 396, 76, 207], [0, 76, 396, 114, 208], [0, 114, 396, 153, 209], [0, 153, 396, 191, 210], [0, 191, 396, 229, 211], [0, 229, 396, 267, 212], [0, 267, 396, 306, 213], [0, 306, 396, 344, 214], [0, 344, 396, 382, 215], [0, 382, 396, 420, 216], [0, 420, 396, 459, 217], [0, 459, 396, 497, 218], [0, 497, 396, 535, 219], [0, 535, 396, 573, 220], [0, 573, 396, 612, 221], [0, 612, 396, 650, 222], [0, 650, 396, 672, 223]], [[0, 0, 396, 38, 228], [0, 38, 396, 76, 229], [0, 76, 396, 114, 230], [0, 114, 396, 153, 231], [0, 153, 396, 191, 232], [0, 191, 396, 229, 233], [0, 229, 396, 267, 234], [0, 267, 396, 306, 235], [0, 306, 396, 344, 236], [0, 344, 396, 382, 237], [0, 382, 396, 420, 238], [0, 420, 396, 459, 239], [0, 459, 396, 497, 240], [0, 497, 396, 535, 241], [0, 535, 396, 573, 242], [0, 573, 396, 612, 243], [0, 612, 396, 650, 244], [0, 650, 396, 672, 9853]], [[0, 0, 396, 38, 249], [0, 38, 396, 76, 250], [0, 76, 396, 115, 251], [0, 115, 396, 153, 252], [0, 153, 396, 191, 253], [0, 191, 396, 229, 254], [0, 229, 396, 268, 255], [0, 268, 396, 306, 256], [0, 306, 396, 344, 257], [0, 344, 396, 382, 258], [0, 382, 396, 421, 259], [0, 421, 396, 459, 260], [0, 459, 396, 497, 261], [0, 497, 396, 535, 262], [0, 535, 396, 574, 263], [0, 574, 396, 612, 264], [0, 612, 396, 650, 265], [0, 650, 396, 672, 9853]], [[0, 0, 396, 38, 270], [0, 38, 396, 76, 271], [0, 76, 396, 114, 272], [0, 114, 396, 153, 273], [0, 153, 396, 191, 274], [0, 191, 396, 229, 275], [0, 229, 396, 267, 276], [0, 267, 396, 306, 277], [0, 306, 396, 344, 278], [0, 344, 396, 382, 279], [0, 382, 396, 420, 280], [0, 420, 396, 459, 281], [0, 459, 396, 497, 282], [0, 497, 396, 535, 283], [0, 535, 396, 573, 284], [0, 573, 396, 612, 285], [0, 612, 396, 650, 286], [0, 650, 396, 672, 9853]], [[0, 0, 396, 38, 291], [0, 38, 396, 76, 292], [0, 76, 396, 114, 293], [0, 114, 396, 152, 294], [0, 152, 396, 191, 295], [0, 191, 396, 229, 296], [0, 229, 396, 267, 297], [0, 267, 396, 305, 298], [0, 305, 396, 344, 299], [0, 344, 396, 382, 300], [0, 382, 396, 420, 301], [0, 420, 396, 458, 302], [0, 458, 396, 497, 303], [0, 497, 396, 535, 304], [0, 535, 396, 573, 305], [0, 573, 396, 611, 306], [0, 611, 396, 650, 307], [0, 650, 396, 671, 9853]], [[0, 0, 402, 36, 312], [0, 36, 402, 73, 313], [0, 73, 402, 110, 314], [0, 110, 402, 147, 315], [0, 147, 402, 184, 316], [0, 184, 402, 222, 317], [0, 222, 402, 258, 318], [0, 258, 402, 295, 319], [0, 295, 402, 333, 320], [0, 333, 402, 369, 321], [0, 369, 402, 406, 322], [0, 406, 402, 444, 323], [0, 444, 402, 480, 324], [0, 480, 402, 517, 325], [0, 517, 402, 555, 326], [0, 555, 402, 591, 327], [0, 591, 402, 628, 328], [0, 628, 402, 666, 9852]], [[0, 0, 405, 36, 11428], [0, 36, 405, 73, 333], [0, 73, 405, 110, 334], [0, 110, 405, 147, 335], [0, 147, 405, 184, 336], [0, 184, 405, 222, 337], [0, 222, 405, 258, 338], [0, 258, 405, 295, 339], [0, 295, 405, 333, 340], [0, 333, 405, 369, 341], [0, 369, 405, 406, 342], [0, 406, 405, 444, 343], [0, 444, 405, 480, 344], [0, 480, 405, 517, 345], [0, 517, 405, 555, 346], [0, 555, 405, 591, 347], [0, 591, 405, 628, 348]], [[0, 0, 396, 38, 353], [0, 38, 396, 76, 354], [0, 76, 396, 114, 355], [0, 114, 396, 153, 356], [0, 153, 396, 191, 357], [0, 191, 396, 229, 358], [0, 229, 396, 267, 359], [0, 267, 396, 306, 360], [0, 306, 396, 344, 361], [0, 344, 396, 382, 362], [0, 382, 396, 420, 363], [0, 420, 396, 459, 364], [0, 459, 396, 497, 365], [0, 497, 396, 535, 366], [0, 535, 396, 573, 367], [0, 573, 396, 612, 368], [0, 612, 396, 650, 369], [0, 650, 396, 672, 9853]], [[0, 0, 405, 36, 11428], [0, 36, 405, 73, 374], [0, 73, 405, 110, 375], [0, 110, 405, 147, 376], [0, 147, 405, 184, 377], [0, 184, 405, 222, 378], [0, 222, 405, 258, 379], [0, 258, 405, 295, 380], [0, 295, 405, 333, 381], [0, 333, 405, 369, 382], [0, 369, 405, 406, 383], [0, 406, 405, 444, 384], [0, 444, 405, 480, 385], [0, 480, 405, 517, 386], [0, 517, 405, 555, 387], [0, 555, 405, 591, 388], [0, 591, 405, 628, 389]], [[0, 0, 402, 36, 394], [0, 36, 402, 73, 395], [0, 73, 402, 110, 396], [0, 110, 402, 147, 397], [0, 147, 402, 184, 398], [0, 184, 402, 222, 399], [0, 222, 402, 258, 400], [0, 258, 402, 295, 401], [0, 295, 402, 333, 402], [0, 333, 402, 369, 403], [0, 369, 402, 406, 404], [0, 406, 402, 444, 405], [0, 444, 402, 480, 406], [0, 480, 402, 517, 407], [0, 517, 402, 555, 408], [0, 555, 402, 591, 409], [0, 591, 402, 628, 410], [0, 628, 402, 666, 9852]], [[0, 0, 405, 36, 415], [0, 36, 405, 73, 416], [0, 73, 405, 110, 417], [0, 110, 405, 147, 418], [0, 147, 405, 184, 419], [0, 184, 405, 222, 420], [0, 222, 405, 258, 421], [0, 258, 405, 295, 422], [0, 295, 405, 333, 423], [0, 333, 405, 369, 424], [0, 369, 405, 406, 425], [0, 406, 405, 444, 426], [0, 444, 405, 480, 427], [0, 480, 405, 517, 428], [0, 517, 405, 555, 429], [0, 555, 405, 591, 430], [0, 591, 405, 628, 431], [0, 628, 405, 666, 11428]], [[0, 0, 396, 38, 436], [0, 38, 396, 76, 437], [0, 76, 396, 115, 438], [0, 115, 396, 153, 439], [0, 153, 396, 191, 440], [0, 191, 396, 229, 441], [0, 229, 396, 268, 442], [0, 268, 396, 306, 443], [0, 306, 396, 344, 444], [0, 344, 396, 382, 445], [0, 382, 396, 421, 446], [0, 421, 396, 459, 447], [0, 459, 396, 497, 448], [0, 497, 396, 535, 449], [0, 535, 396, 574, 450], [0, 574, 396, 612, 451], [0, 612, 396, 650, 452], [0, 650, 396, 672, 9853]], [[0, 0, 402, 36, 457], [0, 36, 402, 73, 458], [0, 73, 402, 110, 459], [0, 110, 402, 147, 460], [0, 147, 402, 184, 461], [0, 184, 402, 222, 462], [0, 222, 402, 258, 463], [0, 258, 402, 295, 464], [0, 295, 402, 333, 465], [0, 333, 402, 369, 466], [0, 369, 402, 406, 467], [0, 406, 402, 444, 468], [0, 444, 402, 480, 469], [0, 480, 402, 517, 470], [0, 517, 402, 555, 471], [0, 555, 402, 591, 472], [0, 591, 402, 628, 473], [0, 628, 402, 666, 9852]], [[0, 0, 405, 36, 478], [0, 36, 405, 73, 479], [0, 73, 405, 110, 480], [0, 110, 405, 147, 481], [0, 147, 405, 185, 482], [0, 185, 405, 221, 483], [0, 221, 405, 259, 484], [0, 259, 405, 296, 485], [0, 296, 405, 333, 486], [0, 333, 405, 370, 487], [0, 370, 405, 407, 488], [0, 407, 405, 444, 489], [0, 444, 405, 481, 490], [0, 481, 405, 518, 491], [0, 518, 405, 555, 492], [0, 555, 405, 593, 493], [0, 593, 405, 629, 494], [0, 629, 405, 667, 11428]], [[0, 0, 405, 36, 499], [0, 36, 405, 73, 500], [0, 73, 405, 110, 501], [0, 110, 405, 147, 502], [0, 147, 405, 184, 503], [0, 184, 405, 222, 504], [0, 222, 405, 258, 505], [0, 258, 405, 295, 506], [0, 295, 405, 333, 507], [0, 333, 405, 369, 508], [0, 369, 405, 406, 509], [0, 406, 405, 444, 510], [0, 444, 405, 480, 511], [0, 480, 405, 517, 512], [0, 517, 405, 555, 513], [0, 555, 405, 591, 514], [0, 591, 405, 628, 515], [0, 628, 405, 666, 11428]], [[0, 0, 402, 36, 520], [0, 36, 402, 73, 521], [0, 73, 402, 110, 522], [0, 110, 402, 147, 523], [0, 147, 402, 184, 524], [0, 184, 402, 222, 525], [0, 222, 402, 258, 526], [0, 258, 402, 295, 527], [0, 295, 402, 333, 528], [0, 333, 402, 369, 529], [0, 369, 402, 406, 530], [0, 406, 402, 444, 531], [0, 444, 402, 480, 532], [0, 480, 402, 517, 533], [0, 517, 402, 555, 534], [0, 555, 402, 591, 535], [0, 591, 402, 628, 536], [0, 628, 402, 666, 9852]], [[0, 0, 408, 37, 9858], [0, 37, 408, 73, 541], [0, 73, 408, 110, 542], [0, 110, 408, 147, 543], [0, 147, 408, 184, 544], [0, 184, 408, 220, 545], [0, 220, 408, 257, 546], [0, 257, 408, 294, 547], [0, 294, 408, 331, 548], [0, 331, 408, 367, 549], [0, 367, 408, 404, 550], [0, 404, 408, 441, 551], [0, 441, 408, 478, 552], [0, 478, 408, 514, 553], [0, 514, 408, 551, 554], [0, 551, 408, 588, 555], [0, 588, 408, 625, 556], [0, 625, 408, 661, 557], [0, 661, 408, 679, 9859]], [[0, 0, 401, 38, 562], [0, 38, 401, 75, 563], [0, 75, 401, 113, 564], [0, 113, 401, 150, 565], [0, 150, 401, 188, 566], [0, 188, 401, 225, 567], [0, 225, 401, 263, 568], [0, 263, 401, 300, 569], [0, 300, 401, 338, 570], [0, 338, 401, 375, 571], [0, 375, 401, 413, 572], [0, 413, 401, 450, 573], [0, 450, 401, 488, 574], [0, 488, 401, 525, 575], [0, 525, 401, 563, 576], [0, 563, 401, 600, 577], [0, 600, 401, 638, 578], [0, 638, 401, 674, 9860]], [[0, 0, 402, 36, 583], [0, 36, 402, 73, 584], [0, 73, 402, 110, 585], [0, 110, 402, 147, 586], [0, 147, 402, 184, 587], [0, 184, 402, 222, 588], [0, 222, 402, 258, 589], [0, 258, 402, 295, 590], [0, 295, 402, 333, 591], [0, 333, 402, 369, 592], [0, 369, 402, 406, 593], [0, 406, 402, 444, 594], [0, 444, 402, 480, 595], [0, 480, 402, 517, 596], [0, 517, 402, 555, 597], [0, 555, 402, 591, 598], [0, 591, 402, 628, 599], [0, 628, 402, 666, 600]], [[0, 0, 405, 36, 605], [0, 36, 405, 73, 606], [0, 73, 405, 110, 607], [0, 110, 405, 147, 608], [0, 147, 405, 184, 609], [0, 184, 405, 222, 610], [0, 222, 405, 258, 611], [0, 258, 405, 295, 612], [0, 295, 405, 333, 613], [0, 333, 405, 369, 614], [0, 369, 405, 406, 615], [0, 406, 405, 444, 616], [0, 444, 405, 480, 617], [0, 480, 405, 517, 618], [0, 517, 405, 555, 619], [0, 555, 405, 591, 620], [0, 591, 405, 628, 621], [0, 628, 405, 666, 11428]], [[0, 0, 402, 36, 9852], [0, 36, 402, 73, 626], [0, 73, 402, 110, 627], [0, 110, 402, 147, 628], [0, 147, 402, 184, 629], [0, 184, 402, 222, 630], [0, 222, 402, 258, 631], [0, 258, 402, 295, 632], [0, 295, 402, 333, 633], [0, 333, 402, 369, 634], [0, 369, 402, 406, 635], [0, 406, 402, 444, 636], [0, 444, 402, 480, 637], [0, 480, 402, 517, 638], [0, 517, 402, 555, 639], [0, 555, 402, 591, 640], [0, 591, 402, 628, 641], [0, 628, 402, 666, 642]], [[0, 0, 406, 36, 647], [0, 36, 406, 73, 648], [0, 73, 406, 110, 649], [0, 110, 406, 147, 650], [0, 147, 406, 185, 651], [0, 185, 406, 221, 652], [0, 221, 406, 259, 653], [0, 259, 406, 296, 654], [0, 296, 406, 333, 655], [0, 333, 406, 370, 656], [0, 370, 406, 407, 657], [0, 407, 406, 444, 658], [0, 444, 406, 481, 659], [0, 481, 406, 518, 660], [0, 518, 406, 555, 661], [0, 555, 406, 593, 662], [0, 593, 406, 629, 663], [0, 629, 406, 667, 9861]], [[0, 0, 396, 38, 668], [0, 38, 396, 76, 669], [0, 76, 396, 114, 670], [0, 114, 396, 152, 671], [0, 152, 396, 191, 672], [0, 191, 396, 229, 673], [0, 229, 396, 267, 674], [0, 267, 396, 305, 675], [0, 305, 396, 344, 676], [0, 344, 396, 382, 677], [0, 382, 396, 420, 678], [0, 420, 396, 458, 679], [0, 458, 396, 497, 680], [0, 497, 396, 535, 681], [0, 535, 396, 573, 682], [0, 573, 396, 611, 683], [0, 611, 396, 650, 684], [0, 650, 396, 671, 9853]], [[0, 0, 405, 36, 689], [0, 36, 405, 73, 690], [0, 73, 405, 110, 691], [0, 110, 405, 147, 692], [0, 147, 405, 184, 693], [0, 184, 405, 222, 694], [0, 222, 405, 258, 695], [0, 258, 405, 295, 696], [0, 295, 405, 333, 697], [0, 333, 405, 369, 698], [0, 369, 405, 406, 699], [0, 406, 405, 444, 700], [0, 444, 405, 480, 701], [0, 480, 405, 517, 702], [0, 517, 405, 555, 703], [0, 555, 405, 591, 704], [0, 591, 405, 628, 705], [0, 628, 405, 666, 11428]], [[0, 0, 401, 38, 710], [0, 38, 401, 75, 711], [0, 75, 401, 113, 712], [0, 113, 401, 150, 713], [0, 150, 401, 188, 714], [0, 188, 401, 225, 715], [0, 225, 401, 263, 716], [0, 263, 401, 300, 717], [0, 300, 401, 338, 718], [0, 338, 401, 375, 719], [0, 375, 401, 413, 720], [0, 413, 401, 450, 721], [0, 450, 401, 488, 722], [0, 488, 401, 525, 723], [0, 525, 401, 563, 724], [0, 563, 401, 600, 725], [0, 600, 401, 638, 726], [0, 638, 401, 674, 9860]], [[0, 0, 400, 38, 731], [0, 38, 400, 75, 732], [0, 75, 400, 113, 733], [0, 113, 400, 150, 734], [0, 150, 400, 188, 735], [0, 188, 400, 225, 736], [0, 225, 400, 263, 737], [0, 263, 400, 300, 738], [0, 300, 400, 338, 739], [0, 338, 400, 375, 740], [0, 375, 400, 413, 741], [0, 413, 400, 450, 742], [0, 450, 400, 488, 743], [0, 488, 400, 525, 744], [0, 525, 400, 563, 745], [0, 563, 400, 600, 746], [0, 600, 400, 638, 747], [0, 638, 400, 674, 9860]], [[0, 0, 396, 38, 752], [0, 38, 396, 76, 753], [0, 76, 396, 114, 754], [0, 114, 396, 152, 755], [0, 152, 396, 191, 756], [0, 191, 396, 229, 757], [0, 229, 396, 267, 758], [0, 267, 396, 305, 759], [0, 305, 396, 344, 760], [0, 344, 396, 382, 761], [0, 382, 396, 420, 762], [0, 420, 396, 458, 763], [0, 458, 396, 497, 764], [0, 497, 396, 535, 765], [0, 535, 396, 573, 766], [0, 573, 396, 611, 767], [0, 611, 396, 650, 768], [0, 650, 396, 671, 9853]], [[0, 0, 396, 38, 773], [0, 38, 396, 76, 774], [0, 76, 396, 114, 775], [0, 114, 396, 152, 776], [0, 152, 396, 191, 777], [0, 191, 396, 229, 778], [0, 229, 396, 267, 779], [0, 267, 396, 305, 780], [0, 305, 396, 344, 781], [0, 344, 396, 382, 782], [0, 382, 396, 420, 783], [0, 420, 396, 458, 784], [0, 458, 396, 497, 785], [0, 497, 396, 535, 786], [0, 535, 396, 573, 787], [0, 573, 396, 611, 788], [0, 611, 396, 650, 789], [0, 650, 396, 671, 9853]], [[0, 0, 408, 36, 9858], [0, 36, 408, 73, 794], [0, 73, 408, 110, 795], [0, 110, 408, 146, 796], [0, 146, 408, 183, 797], [0, 183, 408, 220, 798], [0, 220, 408, 257, 799], [0, 257, 408, 293, 800], [0, 293, 408, 330, 801], [0, 330, 408, 367, 802], [0, 367, 408, 404, 803], [0, 404, 408, 440, 804], [0, 440, 408, 477, 805], [0, 477, 408, 514, 806], [0, 514, 408, 551, 807], [0, 551, 408, 587, 808], [0, 587, 408, 624, 809], [0, 624, 408, 661, 810], [0, 661, 408, 677, 9862]], [[0, 0, 396, 38, 815], [0, 38, 396, 76, 816], [0, 76, 396, 114, 817], [0, 114, 396, 153, 818], [0, 153, 396, 191, 819], [0, 191, 396, 229, 820], [0, 229, 396, 267, 821], [0, 267, 396, 306, 822], [0, 306, 396, 344, 823], [0, 344, 396, 382, 824], [0, 382, 396, 420, 825], [0, 420, 396, 459, 826], [0, 459, 396, 497, 827], [0, 497, 396, 535, 828], [0, 535, 396, 573, 829], [0, 573, 396, 612, 830], [0, 612, 396, 650, 831], [0, 650, 396, 672, 9853]], [[0, 0, 410, 37, 9863], [0, 37, 410, 73, 836], [0, 73, 410, 110, 837], [0, 110, 410, 147, 838], [0, 147, 410, 184, 839], [0, 184, 410, 220, 840], [0, 220, 410, 257, 841], [0, 257, 410, 294, 842], [0, 294, 410, 331, 843], [0, 331, 410, 367, 844], [0, 367, 410, 404, 845], [0, 404, 410, 441, 846], [0, 441, 410, 478, 847], [0, 478, 410, 514, 848], [0, 514, 410, 551, 849], [0, 551, 410, 588, 850], [0, 588, 410, 625, 851], [0, 625, 410, 661, 852], [0, 661, 410, 679, 9864]], [[0, 0, 396, 38, 857], [0, 38, 396, 76, 858], [0, 76, 396, 114, 859], [0, 114, 396, 153, 860], [0, 153, 396, 191, 861], [0, 191, 396, 229, 862], [0, 229, 396, 267, 863], [0, 267, 396, 306, 864], [0, 306, 396, 344, 865], [0, 344, 396, 382, 866], [0, 382, 396, 420, 867], [0, 420, 396, 459, 868], [0, 459, 396, 497, 869], [0, 497, 396, 535, 870], [0, 535, 396, 573, 871], [0, 573, 396, 612, 872], [0, 612, 396, 650, 873], [0, 650, 396, 672, 9853]], [[0, 0, 396, 38, 878], [0, 38, 396, 76, 879], [0, 76, 396, 114, 880], [0, 114, 396, 152, 881], [0, 152, 396, 191, 882], [0, 191, 396, 229, 883], [0, 229, 396, 267, 884], [0, 267, 396, 305, 885], [0, 305, 396, 344, 886], [0, 344, 396, 382, 887], [0, 382, 396, 420, 888], [0, 420, 396, 458, 889], [0, 458, 396, 497, 890], [0, 497, 396, 535, 891], [0, 535, 396, 573, 892], [0, 573, 396, 611, 893], [0, 611, 396, 650, 894], [0, 650, 396, 671, 9853]], [[0, 0, 402, 36, 899], [0, 36, 402, 73, 900], [0, 73, 402, 110, 901], [0, 110, 402, 147, 902], [0, 147, 402, 184, 903], [0, 184, 402, 222, 904], [0, 222, 402, 258, 905], [0, 258, 402, 295, 906], [0, 295, 402, 333, 907], [0, 333, 402, 369, 908], [0, 369, 402, 406, 909], [0, 406, 402, 444, 910], [0, 444, 402, 480, 911], [0, 480, 402, 517, 912], [0, 517, 402, 555, 913], [0, 555, 402, 591, 914], [0, 591, 402, 628, 915], [0, 628, 402, 666, 916]], [[0, 0, 402, 36, 921], [0, 36, 402, 73, 922], [0, 73, 402, 110, 923], [0, 110, 402, 147, 924], [0, 147, 402, 184, 925], [0, 184, 402, 222, 926], [0, 222, 402, 258, 927], [0, 258, 402, 295, 928], [0, 295, 402, 333, 929], [0, 333, 402, 369, 930], [0, 369, 402, 406, 931], [0, 406, 402, 444, 932], [0, 444, 402, 480, 933], [0, 480, 402, 517, 934], [0, 517, 402, 555, 935], [0, 555, 402, 591, 936], [0, 591, 402, 628, 937], [0, 628, 402, 666, 938]], [[0, 0, 406, 36, 943], [0, 36, 406, 73, 944], [0, 73, 406, 110, 945], [0, 110, 406, 147, 946], [0, 147, 406, 185, 947], [0, 185, 406, 221, 948], [0, 221, 406, 259, 949], [0, 259, 406, 296, 950], [0, 296, 406, 333, 951], [0, 333, 406, 370, 952], [0, 370, 406, 407, 953], [0, 407, 406, 444, 954], [0, 444, 406, 481, 955], [0, 481, 406, 518, 956], [0, 518, 406, 555, 957], [0, 555, 406, 593, 958], [0, 593, 406, 629, 959], [0, 629, 406, 667, 960]], [[0, 0, 405, 36, 965], [0, 36, 405, 73, 966], [0, 73, 405, 110, 967], [0, 110, 405, 147, 968], [0, 147, 405, 185, 969], [0, 185, 405, 221, 970], [0, 221, 405, 259, 971], [0, 259, 405, 296, 972], [0, 296, 405, 333, 973], [0, 333, 405, 370, 974], [0, 370, 405, 407, 975], [0, 407, 405, 444, 976], [0, 444, 405, 481, 977], [0, 481, 405, 518, 978], [0, 518, 405, 555, 979], [0, 555, 405, 593, 980], [0, 593, 405, 629, 981], [0, 629, 405, 667, 11428]], [[0, 0, 410, 37, 9863], [0, 37, 410, 73, 986], [0, 73, 410, 110, 987], [0, 110, 410, 147, 988], [0, 147, 410, 184, 989], [0, 184, 410, 220, 990], [0, 220, 410, 257, 991], [0, 257, 410, 294, 992], [0, 294, 410, 331, 993], [0, 331, 410, 367, 994], [0, 367, 410, 404, 995], [0, 404, 410, 441, 996], [0, 441, 410, 478, 997], [0, 478, 410, 514, 998], [0, 514, 410, 551, 999], [0, 551, 410, 588, 1000], [0, 588, 410, 625, 1001], [0, 625, 410, 661, 1002], [0, 661, 410, 679, 9864]]], - "expected_junk_img_bojids": [] - }, - "scihub/scihub_25800000/libgen.scimag25889000-25889999.zip_10.2307/4153991" : { - "expected_image_info": [[[50,726,110,792,21],[50,80,202,230,22]],[[0,0,468,720,17]],[[0,0,468,720,31]]], - "expected_junk_img_bojids": [] - }, - "scanned_detection/llm-raw-scihub-o.O-0584-8539%2891%2980165-f" : { - "expected_image_info": [[[0, 0, 504, 29, 33], [0, 29, 504, 59, 35], [0, 59, 504, 89, 37], [0, 89, 504, 119, 39], [0, 119, 504, 148, 41], [0, 148, 504, 178, 43], [0, 178, 504, 208, 45], [0, 208, 504, 238, 47], [0, 238, 504, 267, 49], [0, 267, 504, 297, 51], [0, 297, 504, 327, 53], [0, 327, 504, 357, 55], [0, 357, 504, 386, 57], [0, 386, 504, 416, 59], [0, 416, 504, 446, 61], [0, 446, 504, 476, 63], [0, 476, 504, 505, 65], [0, 505, 504, 535, 67], [0, 535, 504, 565, 69], [0, 565, 504, 595, 71], [0, 595, 504, 624, 73], [0, 624, 504, 654, 75], [0, 654, 504, 684, 77], [0, 684, 504, 714, 79], [0, 714, 504, 744, 81], [0, 773, 504, 792, 83]]], - "expected_junk_img_bojids": [] - }, - "scanned_detection/llm-raw-scihub-o.O-bf01427123" : { - "expected_image_info": [[[0, 0, 532, 698, 76]], [[0, 0, 532, 698, 14]], [[0, 0, 532, 698, 30]]], - "expected_junk_img_bojids": [] - }, - "scihub/scihub_25900000/libgen.scimag25991000-25991999.zip_10.2307/40066695" : { - "expected_image_info": [[[50, 726, 110, 792, 113], [50, 80, 168, 230, 114]], [[0, 709, 468, 717, 17], [0, 226, 468, 233, 21], [0, 218, 468, 226, 22], [0, 233, 468, 241, 33], [0, 272, 468, 280, 39], [0, 280, 468, 288, 41], [0, 288, 468, 296, 42], [0, 296, 468, 304, 43], [0, 241, 468, 249, 44], [0, 249, 468, 257, 45], [0, 257, 468, 265, 46], [0, 265, 468, 272, 47], [0, 592, 468, 600, 50], [0, 304, 468, 311, 53], [0, 545, 468, 553, 54], [0, 577, 468, 584, 55], [0, 569, 468, 577, 56], [0, 561, 468, 569, 57], [0, 553, 468, 561, 58], [0, 311, 468, 319, 59], [0, 319, 468, 327, 60], [0, 374, 468, 382, 61], [0, 382, 468, 389, 62], [0, 358, 468, 366, 63], [0, 366, 468, 374, 64], [0, 343, 468, 350, 65], [0, 350, 468, 358, 66], [0, 327, 468, 335, 67], [0, 335, 468, 343, 68], [0, 538, 468, 545, 69], [0, 530, 468, 538, 70], [0, 506, 468, 514, 71], [0, 499, 468, 506, 72], [0, 522, 468, 530, 73], [0, 514, 468, 522, 74], [0, 475, 468, 483, 75], [0, 467, 468, 475, 76], [0, 491, 468, 499, 77], [0, 483, 468, 491, 78], [0, 116, 468, 124, 84], [0, 124, 468, 132, 85], [0, 460, 468, 467, 86], [0, 148, 468, 155, 87], [0, 452, 468, 460, 88], [0, 140, 468, 148, 89], [0, 444, 468, 452, 90], [0, 132, 468, 140, 91], [0, 436, 468, 444, 93], [0, 717, 468, 720, 94], [0, 428, 468, 436, 95], [0, 421, 468, 428, 96], [0, 413, 468, 421, 98], [0, 405, 468, 413, 99], [0, 397, 468, 405, 100], [0, 389, 468, 397, 101], [0, 171, 468, 179, 102], [0, 179, 468, 187, 103], [0, 155, 468, 163, 104], [0, 163, 468, 171, 105], [0, 202, 468, 210, 106], [0, 210, 468, 218, 107], [0, 187, 468, 194, 108], [0, 194, 468, 202, 109]], [[0, 709, 468, 717, 123], [0, 210, 468, 218, 133], [0, 226, 468, 233, 134], [0, 218, 468, 226, 135], [0, 241, 468, 249, 136], [0, 233, 468, 241, 137], [0, 257, 468, 265, 138], [0, 249, 468, 257, 139], [0, 272, 468, 280, 140], [0, 265, 468, 272, 141], [0, 280, 468, 288, 142], [0, 124, 468, 132, 143], [0, 592, 468, 600, 144], [0, 140, 468, 148, 154], [0, 132, 468, 140, 155], [0, 171, 468, 179, 156], [0, 163, 468, 171, 157], [0, 155, 468, 163, 158], [0, 148, 468, 155, 159], [0, 202, 468, 210, 160], [0, 194, 468, 202, 161], [0, 187, 468, 194, 162], [0, 179, 468, 187, 163], [0, 608, 468, 616, 164], [0, 319, 468, 327, 165], [0, 600, 468, 608, 166], [0, 327, 468, 335, 167], [0, 335, 468, 343, 169], [0, 343, 468, 350, 171], [0, 350, 468, 358, 173], [0, 358, 468, 366, 175], [0, 288, 468, 296, 180], [0, 296, 468, 304, 181], [0, 304, 468, 311, 182], [0, 311, 468, 319, 183], [0, 116, 468, 124, 187], [0, 717, 468, 720, 206], [0, 366, 468, 374, 207], [0, 389, 468, 397, 208], [0, 374, 468, 382, 212], [0, 382, 468, 389, 213]]] - }, - "scihub/scihub_53700000/libgen.scimag53724000-53724999.zip_10.1097/00129191-200509000-00018": { - "expected_image_info": [[[-2, 0, 603, 80, 24]], [[-3, 0, 602, 80, 24]]] - }, - "zlib/zlib_22115997": { - "expected_image_info": [[[0, 0, 426, 603, 11080]], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], - "expected_junk_img_bojids": [3830, 3831, 3832, 3837, 3833, 3838, 3842, 3834, 3835, 3836, 3839, 3840, 3841, 3872, 3854, 3868, 3850, 3869, 3847, 3873, 3866, 3870, 3857, 3858, 3871, 3855, 3849, 3874, 3843, 3859, 3844, 3853, 3860, 3856, 3851, 3861, 3862, 3845, 3846, 3863, 3848, 3864, 3865, 3867, 3852, 3899, 3906, 3894, 3903, 3902, 3901, 3895, 3905, 3884, 3879, 3904, 3875, 3876, 3889, 3888, 3877, 3882, 3885, 3878, 3896, 3880, 3881, 3890, 3900, 3883, 3891, 3893, 3886, 3887, 3892, 3897, 3898, 3918, 3922, 3936, 3913, 3938, 3920, 3908, 3937, 3909, 3926, 3923, 3919, 3933, 3907, 3934, 3914, 3921, 3931, 3915, 3916, 3924, 3925, 3910, 3927, 3935, 3928, 3929, 3930, 3932, 3911, 3912, 3917, 3965, 3960, 3942, 3951, 3958, 3946, 3952, 3947, 3939, 3963, 3943, 3968, 3969, 3950, 3964, 3961, 3962, 3944, 3966, 3970, 3959, 3967, 3940, 3941, 3945, 3948, 3953, 3949, 3954, 3955, 3956, 3957, 3982, 3991, 3998, 3984, 3975, 4002, 3974, 3999, 3976, 4000, 3985, 3992, 4001, 3971, 3989, 3988, 3983, 3977, 3980, 3997, 3986, 3990, 3993, 3987, 3972, 3994, 3995, 3996, 3973, 3978, 3979, 3981, 4006, 4007, 4010, 4011, 4019, 4016, 4009, 4017, 4012, 4008, 4018, 4003, 4013, 4004, 4014, 4005, 4015, 3796, 3789, 3792, 3790, 3797, 3768, 3783, 3791, 3766, 3773, 3778, 3774, 3767, 3788, 3793, 3769, 3775, 3794, 3776, 3777, 3795, 3779, 3784, 3770, 3772, 3771, 3780, 3781, 3785, 3782, 3786, 3787, 3829, 3811, 3802, 3814, 3820, 3822, 3799, 3806, 3823, 3808, 3809, 3816, 3826, 3804, 3805, 3810, 3827, 3812, 3813, 3828, 3807, 3821, 3824, 3815, 3801, 3803, 3817, 3825, 3818, 3819, 3798, 3800, 3765, 2839, 2818, 2824, 2821, 2833, 2813, 2825, 2823, 2837, 2819, 2838, 2816, 2842, 2835, 2840, 2822, 2830, 2814, 2812, 2815, 2841, 2826, 2827, 2832, 2843, 2817, 2820, 2836, 2828, 2829, 2831, 2834, 2866, 2875, 2865, 2867, 2846, 2859, 2854, 2855, 2856, 2861, 2860, 2850, 2857, 2858, 2862, 2853, 2863, 2852, 2848, 2868, 2873, 2869, 2872, 2864, 2870, 2871, 2845, 2874, 2847, 2844, 2849, 2851, 2885, 2898, 2882, 2876, 2886, 2892, 2884, 2880, 2900, 2905, 2899, 2904, 2895, 2887, 2894, 2906, 2890, 2893, 2877, 2889, 2878, 2888, 2896, 2891, 2897, 2901, 2881, 2902, 2907, 2903, 2879, 2883, 2921, 2915, 2916, 2923, 2924, 2939, 2933, 2919, 2935, 2925, 2926, 2912, 2917, 2936, 2937, 2931, 2932, 2918, 2927, 2908, 2922, 2928, 2913, 2920, 2929, 2930, 2934, 2938, 2909, 2910, 2911, 2914, 2953, 2942, 2947, 2950, 2954, 2956, 2940, 2955, 2941, 2944, 2969, 2961, 2957, 2962, 2945, 2946, 2943, 2949, 2958, 2968, 2948, 2951, 2952, 2959, 2960, 2963, 2970, 2964, 2965, 2966, 2967, 2971, 2982, 2978, 3003, 2985, 3001, 2998, 2991, 3002, 2996, 2972, 2973, 2992, 2974, 2975, 3000, 2986, 2983, 2993, 2976, 2999, 2977, 2984, 2979, 2980, 2994, 2987, 2981, 2988, 2995, 2989, 2990, 2997, 3008, 3032, 3015, 3028, 3005, 3012, 3029, 3014, 3016, 3022, 3033, 3010, 3011, 3017, 3034, 3018, 3023, 3035, 3030, 3024, 3004, 3031, 3006, 3007, 3019, 3020, 3021, 3025, 3026, 3027, 3009, 3013, 3057, 3037, 3065, 3038, 3055, 3051, 3066, 3039, 3049, 3058, 3056, 3064, 3052, 3040, 3067, 3059, 3044, 3041, 3060, 3036, 3061, 3042, 3062, 3050, 3063, 3043, 3045, 3053, 3046, 3047, 3048, 3054, 3081, 3072, 3099, 3071, 3089, 3069, 3097, 3070, 3087, 3083, 3079, 3077, 3090, 3074, 3091, 3068, 3073, 3085, 3095, 3080, 3075, 3092, 3076, 3082, 3088, 3093, 3094, 3098, 3096, 3078, 3084, 3086, 3125, 3110, 3111, 3126, 3107, 3112, 3108, 3100, 3124, 3113, 3115, 3101, 3114, 3122, 3103, 3127, 3104, 3129, 3105, 3121, 3123, 3106, 3128, 3130, 3116, 3117, 3131, 3109, 3118, 3119, 3120, 3102, 3150, 3138, 3143, 3146, 3136, 3132, 3145, 3151, 3147, 3141, 3148, 3142, 3152, 3154, 3153, 3133, 3137, 3168, 3164, 3173, 3174, 3160, 3167, 3169, 3170, 3157, 3176, 3163, 3197, 3192, 3190, 3187, 3188, 3189, 3194, 3186, 3193, 3196, 3204, 3203, 3212, 3211, 3220, 3201, 3199, 3205, 3200, 3214, 3216, 3223, 3241, 3227, 3235, 3224, 3222, 3225, 3221, 3226, 3233, 3238, 3253, 3260, 3250, 3254, 3251, 3252, 3257, 3243, 3258, 3247, 3281, 3272, 3284, 3278, 3275, 3274, 3270, 3277, 3264, 3269, 3265, 3288, 3304, 3305, 3294, 3286, 3300, 3291, 3287, 3293, 3290, 3295, 3307, 3322, 3323, 3309, 3317, 3308, 3312, 3310, 3314, 3320, 3328, 3348, 3329, 3327, 3332, 3337, 3345, 3346, 3331, 3343, 3347, 3367, 3358, 3351, 3350, 3356, 3369, 3361, 3362, 3364, 3365, 3366, 3390, 3379, 3373, 3386, 3387, 3374, 3385, 3375, 3378, 3389, 3407, 3401, 3391, 3406, 3411, 3398, 3409, 3392, 3393, 3402, 3394, 3431, 3427, 3416, 3430, 3418, 3429, 3414, 3424, 3421, 3422, 3428, 3439, 3451, 3443, 3450, 3436, 3440, 3434, 3448, 3452, 3437, 3464, 3471, 3462, 3465, 3461, 3456, 3457, 3475, 3468, 3459, 3467, 3493, 3494, 3482, 3496, 3497, 3484, 3478, 3488, 3479, 3491, 3481, 3510, 3505, 3506, 3512, 3504, 3501, 3508, 3500, 3509, 3513, 3540, 3521, 3527, 3528, 3534, 3537, 3520, 3535, 3529, 3538, 3524, 3551, 3555, 3542, 3556, 3552, 3554, 3544, 3559, 3558, 3546, 3560, 3571, 3572, 3564, 3576, 3573, 3575, 3565, 3577, 3582, 3578, 3598, 3604, 3587, 3602, 3601, 3590, 3588, 3595, 3585, 3593, 3594, 3622, 3623, 3611, 3624, 3625, 3615, 3621, 3616, 3618, 3610, 3620, 3635, 3636, 3629, 3639, 3627, 3630, 3631, 3632, 3633, 3645, 3648, 3655, 3667, 3665, 3666, 3668, 3647, 3656, 3652, 3653, 3664, 3685, 3687, 3673, 3683, 3680, 3688, 3681, 3669, 3684, 3674, 3686, 3703, 3706, 3708, 3698, 3691, 3699, 3704, 3705, 3693, 3694, 3711, 3721, 3723, 3724, 3732, 3727, 3728, 3715, 3730, 3716, 3718, 3743, 3749, 3752, 3741, 3744, 3733, 3742, 3746, 3736, 3737, 3750, 3761, 3755, 3756, 3762, 3764, 2759, 2748, 2762, 2749, 2755, 2768, 2764, 2750, 2751, 2756, 2766, 2780, 2774, 2789, 2771, 2788, 2772, 2783, 2773, 2786, 2787, 2776, 2800, 2809, 2804, 2792, 2811, 2806, 2793, 2807, 2797, 2808, 2325, 2332, 2335, 2341, 2321, 2331, 2333, 2327, 2337, 2324, 2339, 2351, 2344, 2361, 2360, 2343, 2359, 2356, 2347, 2350, 2353, 2357, 2382, 2367, 2383, 2374, 2369, 2379, 2363, 2366, 2365, 2380, 2397, 2401, 2403, 2402, 2392, 2404, 2384, 2385, 2390, 2387, 2394, 2425, 2413, 2411, 2415, 2418, 2426, 2421, 2410, 2420, 2408, 2409, 2445, 2447, 2428, 2438, 2430, 2442, 2433, 2441, 2439, 2443, 2454, 2449, 2451, 2455, 2460, 2465, 2468, 2457, 2461, 2464, 2466, 2486, 2490, 2471, 2470, 2473, 2483, 2472, 2487, 2484, 2485, 2489, 2499, 2511, 2496, 2509, 2502, 2491, 2505, 2506, 2494, 2495, 2532, 2526, 2521, 2531, 2522, 2533, 2515, 2520, 2513, 2524, 2528, 2547, 2551, 2542, 2554, 2543, 2538, 2549, 2548, 2536, 2550, 2537, 2556, 2568, 2559, 2560, 2574, 2570, 2565, 2567, 2575, 2562, 2579, 2597, 2592, 2585, 2577, 2586, 2581, 2587, 2590, 2591, 2593, 2617, 2601, 2605, 2607, 2608, 2610, 2609, 2603, 2613, 2604, 2615, 2622, 2623, 2638, 2625, 2628, 2636, 2637, 2631, 2629, 2633, 2640, 2645, 2660, 2646, 2642, 2657, 2650, 2648, 2651, 2654, 2652, 2677, 2680, 2665, 2671, 2673, 2674, 2676, 2679, 2662, 2664, 2666, 2696, 2685, 2686, 2687, 2702, 2691, 2692, 2693, 2698, 2699, 2719, 2721, 2711, 2705, 2723, 2720, 2704, 2707, 2708, 2712, 2710, 2732, 2739, 2744, 2745, 2743, 2741, 2730, 2746, 2734, 2742, 2735] - }, - "zlib/zlib_21814957": { - "expected_image_info": [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], - "expected_junk_img_bojids": [8472, 8571, 8572, 8573, 8574, 8575, 8576, 8577, 8578, 8579, 8580, 8482, 8581, 8582, 8583, 8584, 8585, 8586, 8587, 8588, 8589, 8590, 8483, 8591, 8592, 8593, 8594, 8595, 8596, 8597, 8598, 8599, 8600, 8484, 8601, 8602, 8603, 8604, 8605, 8606, 8607, 8608, 8609, 8610, 8485, 8611, 8612, 8613, 8614, 8615, 8616, 8617, 8618, 8619, 8620, 8486, 8621, 8622, 8623, 8624, 8625, 8626, 8627, 8628, 8629, 8630, 8487, 8631, 8632, 8633, 8634, 8635, 8636, 8637, 8638, 8639, 8640, 8488, 8641, 8642, 8643, 8644, 8645, 8646, 8647, 8648, 8649, 8650, 8489, 8651, 8652, 8653, 8654, 8655, 8656, 8657, 8658, 8659, 8660, 8490, 8661, 8662, 8663, 8664, 8665, 8666, 8667, 8668, 8669, 8670, 8491, 8671, 8672, 8673, 8674, 8675, 8676, 8677, 8678, 8679, 8680, 8492, 8681, 8682, 8683, 8684, 8685, 8686, 8687, 8688, 8689, 8690, 8493, 8691, 8692, 8693, 8694, 8695, 8696, 8697, 8698, 8699, 8700, 8494, 8701, 8702, 8703, 8704, 8705, 8706, 8707, 8708, 8709, 8710, 8495, 8711, 8712, 8713, 8714, 8715, 8716, 8717, 8718, 8719, 8720, 8496, 8721, 8722, 8723, 8724, 8725, 8726, 8727, 8728, 8729, 8730, 8497, 8731, 8732, 8733, 8734, 8735, 8736, 8737, 8738, 8739, 8740, 8498, 8741, 8742, 8743, 8744, 8745, 8746, 8747, 8748, 8749, 8750, 8499, 8751, 8752, 8753, 8754, 8755, 8756, 8757, 8758, 8759, 8760, 8500, 8761, 8762, 8763, 8764, 8765, 8766, 8767, 8768, 8769, 8770, 8501, 8771, 8772, 8773, 8774, 8775, 8776, 8777, 8778, 8779, 8780, 8502, 8781, 8782, 8783, 8784, 8785, 8786, 8787, 8788, 8789, 8790, 8503, 8791, 8792, 8793, 8794, 8795, 8796, 8797, 8798, 8799, 8800, 8504, 8801, 8802, 8803, 8804, 8805, 8806, 8807, 8808, 8809, 8810, 8505, 8811, 8812, 8813, 8814, 8815, 8816, 8817, 8818, 8819, 8820, 8506, 8821, 8822, 8823, 8824, 8825, 8826, 8827, 8828, 8829, 8830, 8507, 8831, 8832, 8833, 8834, 8835, 8836, 8837, 8838, 8839, 8840, 8508, 8841, 8842, 8843, 8844, 8845, 8846, 8847, 8848, 8849, 8850, 8509, 8851, 8852, 8853, 8854, 8855, 8856, 8857, 8858, 8859, 8860, 8510, 8861, 8862, 8863, 8864, 8865, 8866, 8867, 8868, 8869, 8870, 8511, 8871, 8872, 8873, 8874, 8875, 8876, 8877, 8878, 8879, 8880, 8512, 8881, 8882, 8883, 8884, 8885, 8886, 8887, 8888, 8889, 8890, 8513, 8891, 8892, 8893, 8894, 8895, 8896, 8897, 8898, 8899, 8900, 8514, 8901, 8902, 8903, 8904, 8905, 8906, 8907, 8908, 8909, 8910, 8515, 8911, 8912, 8913, 8914, 8915, 8916, 8917, 8918, 8919, 8920, 8516, 8921, 8922, 8923, 8924, 8925, 8926, 8927, 8928, 8929, 8930, 8517, 8931, 8932, 8933, 8934, 8935, 8936, 8937, 8938, 8939, 8940, 8518, 8941, 8942, 8943, 8944, 8945, 8946, 8947, 8948, 8949, 8950, 8519, 8951, 8952, 8953, 8954, 8955, 8956, 8957, 8958, 8959, 8960, 8520, 8961, 8962, 8963, 8964, 8965, 8966, 8967, 8968, 8969, 8970, 8476, 8521, 8971, 8972, 8973, 8974, 8975, 8976, 8977, 8978, 8979, 8980, 8522, 8981, 8982, 8983, 8984, 8985, 8986, 8987, 8988, 8989, 8990, 8523, 8991, 8992, 8993, 8994, 8995, 8996, 8997, 8998, 8999, 9000, 8524, 9001, 9002, 9003, 9004, 9005, 9006, 9007, 9008, 9009, 9010, 8525, 9011, 9012, 9013, 9014, 9015, 9016, 9017, 9018, 9019, 9020, 8526, 9021, 9022, 9023, 9024, 9025, 9026, 9027, 9028, 9029, 9030, 8527, 9031, 9032, 9033, 9034, 9035, 9036, 9037, 9038, 9039, 9040, 8528, 9041, 9042, 9043, 9044, 9045, 9046, 9047, 9048, 9049, 9050, 8529, 9051, 9052, 9053, 9054, 9055, 9056, 9057, 9058, 9059, 9060, 8530, 9061, 9062, 9063, 9064, 9065, 9066, 9067, 9068, 9069, 9070, 8531, 9071, 9072, 9073, 9074, 9075, 9076, 9077, 9078, 9079, 9080, 8532, 9081, 9082, 9083, 9084, 9085, 9086, 9087, 9088, 9089, 9090, 8533, 9091, 9092, 9093, 9094, 9095, 9096, 9097, 9098, 9099, 8534, 8535, 8536, 8537, 8538, 8539, 8540, 8478, 8541, 8542, 8543, 8544, 8545, 8546, 8547, 8548, 8549, 8550, 8479, 8551, 8552, 8553, 8554, 8555, 8556, 8557, 8558, 8559, 8560, 8480, 8561, 8562, 8563, 8564, 8565, 8566, 8567, 8568, 8569, 8570, 9100, 9102, 9104, 9106, 9108, 9110, 9112, 9114, 9116, 9118, 9120, 9122, 9124, 9126, 9128, 9130, 9132, 9134, 9136, 9138, 9140, 9142, 9144, 9146, 9148, 9150, 9152, 9154, 9156, 9158, 9160, 9162, 9164, 9166, 9168, 9170, 9172, 9174, 9176, 9178, 9180, 9182, 9184, 9186, 9188, 9190, 9192, 9194, 9196, 9198, 9200, 9202, 9204, 9206, 9208, 9210, 9212, 9214, 9216, 9218, 9220, 9222, 9224, 9226, 9228, 9230, 9232, 9234, 9236, 9238, 9240, 9242, 9244, 9246, 9248, 9250, 9252, 9254, 9256, 9258, 9260, 9262, 9264, 9266, 9268, 9270, 9272, 9274, 9276, 9278, 9280, 9282, 9284, 9286, 9288, 9290, 9292, 9294, 9296, 9298, 9300, 9302, 9304, 9306, 9308, 9310, 9312, 9314, 9316, 9318, 9320, 9322, 9324, 9326, 9328, 9330, 9332, 9334, 9336, 9338, 9340, 9342, 9344, 9346, 9348, 9350, 9352, 9354, 9356, 9358, 9360, 9362, 9364, 9366, 9368, 9370, 9372, 9374, 9376, 9378, 9380, 9382, 9384, 9386, 9388, 9390, 9392, 9394, 9396, 9398, 9400, 9402, 9404, 9406, 9408, 9410, 9412, 9414, 9416, 9418, 9420, 9422, 9424, 9426, 9428, 9430, 9432, 9434, 9436, 9438, 9440, 9442, 9444, 9446, 9448, 9450, 9452, 9454, 9456, 9458, 9460, 9462, 9464, 9466, 9468, 9470, 9472, 9474, 9476, 9478, 9480, 9482, 9484, 9486, 9488, 9490, 9492, 9494, 9496, 9498, 9500, 9502, 9504, 9506, 9508, 9510, 9512, 9514, 9516, 9518, 9520, 9522, 9524, 9526, 9528, 9530, 9532, 9534, 9536, 9538, 9540, 9542, 9544, 9546, 9548, 9550, 9552, 9554, 9556, 9558, 9560, 9562, 9564, 9566, 9568, 9570, 9572, 9574, 9576, 9578, 9580, 9582, 9584, 9586, 9588, 9590, 9592, 9594, 9596, 9598, 9600, 9602, 9604, 9606, 9608, 9610, 9612, 9614, 9616, 9618, 9620, 9622, 9624, 9626, 9628, 9630, 9632, 9634, 9636, 9638, 9640, 9642, 9644, 9646, 9648, 9650, 9652, 9654, 9656, 9658, 9660, 9662, 9664, 9666, 9668, 9670, 9672, 9674, 9676, 9678, 9680, 9682, 9684, 9686, 9688, 9690, 9692, 9694, 9696, 9698, 9700, 9702, 9704, 9706, 9708, 9710, 9712, 9714, 9716, 9718, 9720, 9722, 9724, 9726, 9728, 9730, 9732, 9734, 9736, 9738, 9740, 9742, 9744, 9746, 9748, 9750, 9752, 9754, 9756, 9758, 9760, 9762, 9764, 9766, 9768, 9770, 9772, 9774, 9776, 9778, 9780, 9782, 9784, 9786, 9788, 9790, 9792, 9794, 9796, 9798, 9800, 9802, 9804, 9806, 9808, 9810, 9812, 9814, 9816, 9818, 9820, 9822, 9824, 9826, 9828, 9830, 9832, 9834, 9836, 9838, 9840, 9842, 9844, 9846, 9848, 9850, 9852, 9854, 9856, 9858, 9860, 9862, 9864, 9866, 9868, 9870, 9872, 9874, 9876, 9878, 9880, 9882, 9884, 9886, 9888, 9890, 9892, 9894, 9896, 9898, 9900, 9902, 9904, 9906, 9908, 9910, 9912, 9914, 9916, 9918, 9920, 9922, 9924, 9926, 9928, 9930, 9932, 9934, 9936, 9938, 9940, 9942, 9944, 9946, 9948, 9950, 9952, 9954, 9956, 9958, 9960, 9962, 9964, 9966, 9968, 9970, 9972, 9974, 9976, 9978, 9980, 9982, 9984, 9986, 9988, 9990, 9992, 9994, 9996, 9998, 10000, 10002, 10004, 10006, 10008, 10010, 10012, 10014, 10016, 10018, 10020, 10022, 10024, 10026, 10028, 10030, 10032, 10034, 10036, 10038, 10040, 10042, 10044, 10046, 10048, 10050, 10052, 10054, 10056, 10058, 10060, 10062, 10064, 10066, 10068, 10070, 10072, 10074, 10076, 10078, 10080, 10082, 10084, 10086, 10088, 10090, 10092, 10094, 10096, 10098, 10100, 10102, 10104, 10106, 10108, 10110, 10112, 10114, 10116, 10118, 10120, 10122, 10124, 10126, 10128, 10130, 10132, 10134, 10136, 10138, 10140, 10142, 10144, 10146, 10148, 10150, 10152, 10154, 10156, 10158, 10160, 10162, 10164, 10166, 10168, 10170, 10172, 10174, 10176, 10178, 10180, 10182, 10184, 10186, 10188, 10190, 10192, 10194, 10196, 10198, 10200, 10202, 10204, 10206, 10208, 10210, 10212, 10214, 10216, 10218, 10220, 10222, 10224, 10226, 10228, 10230, 10232, 10234, 10236, 10238, 10240, 10242, 10244, 10246, 10248, 10250, 10252, 10254, 10256, 10258, 10260, 10262, 10264, 10266, 10268, 10270, 10272, 10274, 10276, 10278, 10280, 10282, 10284, 10286, 10288, 10290, 10292, 10294, 10296, 10298, 10300, 10302, 10304, 10306, 10308, 10310, 10312, 10314, 10316, 10318, 10320, 10322, 10324, 10326, 10328, 10330, 10332, 10334, 10336, 10338, 10340, 10342, 10344, 10346, 8481, 8477, 8473, 8474, 8475, 10348, 10350, 10352, 10354] - }, - "zlib/zlib_21814955": { - "expected_image_info": [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], - "expected_junk_img_bojids": [5678, 5687, 5777, 5778, 5779, 5780, 5781, 5782, 5783, 5784, 5785, 5786, 5688, 5787, 5788, 5789, 5790, 5791, 5792, 5793, 5794, 5795, 5796, 5689, 5797, 5798, 5799, 5800, 5801, 5802, 5803, 5804, 5805, 5806, 5690, 5807, 5808, 5809, 5810, 5811, 5812, 5813, 5814, 5815, 5816, 5691, 5817, 5818, 5819, 5820, 5821, 5822, 5823, 5824, 5825, 5826, 5692, 5827, 5828, 5829, 5830, 5831, 5832, 5833, 5834, 5835, 5836, 5693, 5837, 5838, 5839, 5840, 5841, 5842, 5843, 5844, 5845, 5846, 5694, 5847, 5848, 5849, 5850, 5851, 5852, 5853, 5854, 5855, 5856, 5695, 5857, 5858, 5859, 5860, 5861, 5862, 5863, 5864, 5865, 5866, 5696, 5867, 5868, 5869, 5870, 5871, 5872, 5873, 5874, 5875, 5876, 5697, 5877, 5878, 5879, 5880, 5881, 5882, 5883, 5884, 5885, 5886, 5698, 5887, 5888, 5889, 5890, 5891, 5892, 5893, 5894, 5895, 5896, 5699, 5897, 5898, 5899, 5900, 5901, 5902, 5903, 5904, 5905, 5906, 5700, 5907, 5908, 5909, 5910, 5911, 5912, 5913, 5914, 5915, 5916, 5701, 5917, 5918, 5919, 5920, 5921, 5922, 5923, 5924, 5925, 5926, 5702, 5927, 5928, 5929, 5930, 5931, 5932, 5933, 5934, 5935, 5936, 5703, 5937, 5938, 5939, 5940, 5941, 5942, 5943, 5944, 5945, 5946, 5704, 5947, 5948, 5949, 5950, 5951, 5952, 5953, 5954, 5955, 5956, 5705, 5957, 5958, 5959, 5960, 5961, 5962, 5963, 5964, 5965, 5966, 5706, 5967, 5968, 5969, 5970, 5971, 5972, 5973, 5974, 5975, 5976, 5707, 5977, 5978, 5979, 5980, 5981, 5982, 5983, 5984, 5985, 5986, 5708, 5987, 5988, 5989, 5990, 5991, 5992, 5993, 5994, 5995, 5996, 5709, 5997, 5998, 5999, 6000, 6001, 6002, 6003, 6004, 6005, 6006, 5710, 6007, 6008, 6009, 6010, 6011, 6012, 6013, 6014, 6015, 6016, 5711, 6017, 6018, 6019, 6020, 6021, 6022, 6023, 6024, 6025, 6026, 5712, 6027, 6028, 6029, 6030, 6031, 6032, 6033, 6034, 6035, 6036, 5713, 6037, 6038, 6039, 6040, 6041, 6042, 6043, 6044, 6045, 6046, 5714, 6047, 6048, 6049, 6050, 6051, 6052, 6053, 6054, 6055, 6056, 5715, 6057, 6058, 6059, 6060, 6061, 6062, 6063, 6064, 6065, 6066, 5716, 6067, 6068, 6069, 6070, 6071, 6072, 6073, 6074, 6075, 6076, 5717, 6077, 6078, 6079, 6080, 6081, 6082, 6083, 6084, 6085, 6086, 5718, 6087, 6088, 6089, 6090, 6091, 6092, 6093, 6094, 6095, 6096, 5719, 6097, 6098, 6099, 6100, 6101, 6102, 6103, 6104, 6105, 6106, 5720, 6107, 6108, 6109, 6110, 6111, 6112, 6113, 6114, 6115, 6116, 5721, 6117, 6118, 6119, 6120, 6121, 6122, 6123, 6124, 6125, 6126, 5722, 6127, 6128, 6129, 6130, 6131, 6132, 6133, 6134, 6135, 6136, 5723, 6137, 6138, 6139, 6140, 6141, 6142, 6143, 6144, 6145, 6146, 5724, 6147, 6148, 6149, 6150, 6151, 6152, 6153, 6154, 6155, 6156, 5725, 6157, 6158, 6159, 6160, 6161, 6162, 6163, 6164, 6165, 6166, 5726, 6167, 6168, 6169, 6170, 6171, 6172, 6173, 6174, 6175, 6176, 5682, 5727, 6177, 6178, 6179, 6180, 6181, 6182, 6183, 6184, 6185, 6186, 5728, 6187, 6188, 6189, 6190, 6191, 6192, 6193, 6194, 6195, 6196, 5729, 6197, 6198, 6199, 6200, 6201, 6202, 6203, 6204, 6205, 6206, 5730, 6207, 6208, 6209, 6210, 6211, 6212, 6213, 6214, 6215, 6216, 5731, 6217, 6218, 6219, 6220, 6221, 6222, 6223, 6224, 6225, 6226, 5732, 6227, 6228, 6229, 6230, 6231, 6232, 6233, 6234, 6235, 6236, 5733, 6237, 6238, 6239, 6240, 6241, 6242, 6243, 6244, 6245, 6246, 5734, 6247, 5735, 5736, 5737, 5738, 5739, 5740, 5741, 5742, 5743, 5744, 5745, 5746, 5747, 5748, 5749, 5750, 5751, 5752, 5753, 5754, 5755, 5756, 5685, 5757, 5758, 5759, 5760, 5761, 5762, 5763, 5764, 5765, 5766, 5686, 5767, 5768, 5769, 5770, 5771, 5772, 5773, 5774, 5775, 5776, 6248, 6250, 6252, 6254, 6256, 6258, 6260, 6262, 6264, 6266, 6268, 6270, 6272, 6274, 6276, 6278, 6280, 6282, 6284, 6286, 6288, 6290, 6292, 6294, 6296, 6298, 6300, 6302, 6304, 6306, 6308, 6310, 6312, 6314, 6316, 6318, 6320, 6322, 6324, 6326, 6328, 6330, 6332, 6334, 6336, 6338, 6340, 6342, 6344, 6346, 6348, 6350, 6352, 6354, 6356, 6358, 6360, 6362, 6364, 6366, 6368, 6370, 6372, 6374, 6376, 6378, 6380, 6382, 6384, 6386, 6388, 6390, 6392, 6394, 6396, 6398, 6400, 6402, 6404, 6406, 6408, 6410, 6412, 6414, 6416, 6418, 6420, 6422, 6424, 6426, 6428, 6430, 6432, 6434, 6436, 6438, 6440, 6442, 6444, 6446, 6448, 6450, 6452, 6454, 6456, 6458, 6460, 6462, 6464, 6466, 6468, 6470, 6472, 6474, 6476, 6478, 6480, 6482, 6484, 6486, 6488, 6490, 6492, 6494, 6496, 6498, 6500, 6502, 6504, 6506, 6508, 6510, 6512, 6514, 6516, 6518, 6520, 6522, 6524, 6526, 6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6548, 6550, 6552, 6554, 6556, 6558, 6560, 6562, 6564, 6566, 6568, 6570, 6572, 6574, 6576, 6578, 6580, 6582, 6584, 6586, 6588, 6590, 6592, 6594, 6596, 6598, 6600, 6602, 6604, 6606, 6608, 6610, 6612, 6614, 6616, 6618, 6620, 6622, 6624, 6626, 6628, 6630, 6632, 6634, 6636, 6638, 6640, 6642, 6644, 6646, 6648, 6650, 6652, 6654, 6656, 6658, 6660, 6662, 6664, 6666, 6668, 6670, 6672, 6674, 6676, 6678, 6680, 6682, 6684, 6686, 6688, 6690, 6692, 6694, 6696, 6698, 6700, 6702, 6704, 6706, 6708, 6710, 6712, 6714, 6716, 6718, 6720, 6722, 6724, 6726, 6728, 6730, 6732, 6734, 6736, 6738, 6740, 6742, 6744, 6746, 6748, 6750, 6752, 6754, 6756, 6758, 6760, 6762, 6764, 6766, 6768, 6770, 6772, 6774, 6776, 6778, 6780, 6782, 6784, 6786, 6788, 6790, 6792, 6794, 6796, 6798, 6800, 6802, 6804, 6806, 6808, 6810, 6812, 6814, 6816, 6818, 6820, 6822, 6824, 6826, 6828, 6830, 6832, 6834, 6836, 6838, 6840, 6842, 6844, 6846, 6848, 6850, 6852, 6854, 6856, 6858, 6860, 6862, 6864, 6866, 6868, 6870, 6872, 6874, 6876, 6878, 6880, 6882, 6884, 6886, 6888, 6890, 6892, 6894, 6896, 6898, 6900, 6902, 6904, 6906, 6908, 6910, 6912, 6914, 6916, 6918, 6920, 6922, 6924, 6926, 6928, 6930, 6932, 6934, 6936, 6938, 6940, 6942, 6944, 6946, 6948, 6950, 6952, 6954, 6956, 6958, 6960, 6962, 6964, 6966, 6968, 6970, 6972, 6974, 6976, 6978, 6980, 6982, 6984, 6986, 6988, 6990, 6992, 6994, 6996, 6998, 7000, 7002, 7004, 7006, 7008, 7010, 7012, 7014, 7016, 7018, 7020, 7022, 7024, 7026, 7028, 7030, 7032, 7034, 7036, 7038, 7040, 7042, 7044, 7046, 7048, 7050, 7052, 7054, 7056, 7058, 7060, 7062, 7064, 7066, 7068, 7070, 7072, 7074, 7076, 7078, 7080, 7082, 7084, 7086, 7088, 7090, 7092, 7094, 7096, 7098, 7100, 7102, 7104, 7106, 7108, 7110, 7112, 7114, 7116, 7118, 7120, 7122, 7124, 7126, 7128, 7130, 7132, 7134, 7136, 7138, 7140, 7142, 7144, 7146, 7148, 7150, 7152, 7154, 7156, 7158, 7160, 7162, 7164, 7166, 7168, 7170, 7172, 7174, 7176, 7178, 7180, 7182, 7184, 7186, 7188, 7190, 7192, 7194, 7196, 7198, 7200, 7202, 7204, 7206, 7208, 7210, 7212, 7214, 7216, 7218, 7220, 7222, 7224, 7226, 7228, 7230, 7232, 7234, 7236, 7238, 7240, 7242, 7244, 7246, 7248, 7250, 7252, 7254, 7256, 7258, 7260, 7262, 7264, 7266, 7268, 7270, 7272, 7274, 7276, 7278, 7280, 7282, 7284, 7286, 7288, 7290, 7292, 7294, 7296, 7298, 7300, 7302, 7304, 7306, 7308, 7310, 7312, 7314, 7316, 7318, 7320, 7322, 7324, 7326, 7328, 7330, 7332, 7334, 7336, 7338, 7340, 7342, 7344, 7346, 7348, 7350, 7352, 7354, 7356, 7358, 7360, 7362, 7364, 7366, 7368, 7370, 7372, 7374, 7376, 7378, 5679, 5680, 5681, 5683, 5684, 7380, 7382, 7384, 7386] - }, - "scihub/scihub_41200000/libgen.scimag41253000-41253999.zip_10.1080/00222938709460256": { - "expected_image_info": [[[21, 117, 144, 290, 44]], [], [[0, -9, 383, 602, 84]], [[2, -7, 385, 604, 91]], [[1, -9, 384, 602, 96]], [[1, -9, 384, 602, 104]], [[0, -5, 383, 606, 109]], [[3, -7, 386, 604, 114]], [[0, -6, 383, 605, 119]], [[0, 0, 383, 611, 124]], [[-4, 1, 379, 613, 131]], [[-1, -4, 382, 607, 138]], [[-1, -12, 382, 599, 144]]], - "expected_junk_img_bojids": [] - }, - "scihub/scihub_37000000/libgen.scimag37068000-37068999.zip_10.1080/0015587X.1936.9718622": { - "expected_image_info": [[[21, 117, 144, 277, 20]], [], [[0, 0, 430, 649, 53]], [[0, 0, 430, 649, 77]], [[0, 0, 430, 649, 80]]], - "expected_junk_img_bojids": [] - } -} diff --git a/tests/unittest/test_model/__init__.py b/tests/unittest/test_model/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/unittest/test_model/assets/test_01.model.json b/tests/unittest/test_model/assets/test_01.model.json deleted file mode 100644 index ee79509e..00000000 --- a/tests/unittest/test_model/assets/test_01.model.json +++ /dev/null @@ -1,687 +0,0 @@ -[ - { - "layout_dets": [ - { - "category_id": 3, - "poly": [ - 776.7277221679688, - 688.448974609375, - 1242.224365234375, - 688.448974609375, - 1242.224365234375, - 1182.0628662109375, - 776.7277221679688, - 1182.0628662109375 - ], - "score": 0.999997079372406 - }, - { - "category_id": 3, - "poly": [ - 775.9269409179688, - 1389.754638671875, - 1243.672119140625, - 1389.754638671875, - 1243.672119140625, - 1859.716064453125, - 775.9269409179688, - 1859.716064453125 - ], - "score": 0.9999949932098389 - }, - { - "category_id": 1, - "poly": [ - 752.11572265625, - 1939.3634033203125, - 1430.1146240234375, - 1939.3634033203125, - 1430.1146240234375, - 2041.1771240234375, - 752.11572265625, - 2041.1771240234375 - ], - "score": 0.999975323677063 - }, - { - "category_id": 3, - "poly": [ - 46.55152893066406, - 686.12939453125, - 638.8861083984375, - 686.12939453125, - 638.8861083984375, - 1803.419189453125, - 46.55152893066406, - 1803.419189453125 - ], - "score": 0.999961256980896 - }, - { - "category_id": 3, - "poly": [ - 33.684722900390625, - 150.77980041503906, - 1238.0679931640625, - 150.77980041503906, - 1238.0679931640625, - 524.98291015625, - 33.684722900390625, - 524.98291015625 - ], - "score": 0.9999504089355469 - }, - { - "category_id": 1, - "poly": [ - 24.685693740844727, - 1875.9998779296875, - 703.5064697265625, - 1875.9998779296875, - 703.5064697265625, - 2050.7431640625, - 24.685693740844727, - 2050.7431640625 - ], - "score": 0.9999105334281921 - }, - { - "category_id": 1, - "poly": [ - 750.97705078125, - 1252.206787109375, - 1430.0809326171875, - 1252.206787109375, - 1430.0809326171875, - 1357.2947998046875, - 750.97705078125, - 1357.2947998046875 - ], - "score": 0.999853789806366 - }, - { - "category_id": 4, - "poly": [ - 904.842041015625, - 1213.027099609375, - 1273.5655517578125, - 1213.027099609375, - 1273.5655517578125, - 1242.717529296875, - 904.842041015625, - 1242.717529296875 - ], - "score": 0.9995817542076111 - }, - { - "category_id": 4, - "poly": [ - 905.3208618164062, - 1898.5325927734375, - 1273.1282958984375, - 1898.5325927734375, - 1273.1282958984375, - 1928.9906005859375, - 905.3208618164062, - 1928.9906005859375 - ], - "score": 0.9986443519592285 - }, - { - "category_id": 4, - "poly": [ - 372.0135498046875, - 556.02685546875, - 1084.9647216796875, - 556.02685546875, - 1084.9647216796875, - 586.6792602539062, - 372.0135498046875, - 586.6792602539062 - ], - "score": 0.9985352754592896 - }, - { - "category_id": 2, - "poly": [ - 1350.63671875, - 79.77919006347656, - 1379.6220703125, - 79.77919006347656, - 1379.6220703125, - 99.83788299560547, - 1350.63671875, - 99.83788299560547 - ], - "score": 0.9973036646842957 - }, - { - "category_id": 4, - "poly": [ - 203.2659912109375, - 597.2034912109375, - 1251.0240478515625, - 597.2034912109375, - 1251.0240478515625, - 657.985595703125, - 203.2659912109375, - 657.985595703125 - ], - "score": 0.9622809886932373 - }, - { - "category_id": 0, - "poly": [ - 70.87332916259766, - 1834.5714111328125, - 657.8504638671875, - 1834.5714111328125, - 657.8504638671875, - 1865.07373046875, - 70.87332916259766, - 1865.07373046875 - ], - "score": 0.8580453395843506 - }, - { - "category_id": 1, - "poly": [ - 189.0360870361328, - 597.2406616210938, - 1252.3204345703125, - 597.2406616210938, - 1252.3204345703125, - 658.4781494140625, - 189.0360870361328, - 658.4781494140625 - ], - "score": 0.3083903193473816 - }, - { - "category_id": 13, - "poly": [ - 1190, - 1980, - 1206, - 1980, - 1206, - 1997, - 1190, - 1997 - ], - "score": 0.51, - "latex": ":" - }, - { - "category_id": 13, - "poly": [ - 1219, - 1331, - 1235, - 1331, - 1235, - 1348, - 1219, - 1348 - ], - "score": 0.49, - "latex": ":" - }, - { - "category_id": 13, - "poly": [ - 798, - 2016, - 813, - 2016, - 813, - 2033, - 798, - 2033 - ], - "score": 0.41, - "latex": ":" - }, - { - "category_id": 13, - "poly": [ - 135, - 1991, - 148, - 1991, - 148, - 2006, - 135, - 2006 - ], - "score": 0.39, - "latex": ":" - }, - { - "category_id": 13, - "poly": [ - 400, - 1916, - 416, - 1916, - 416, - 1933, - 400, - 1933 - ], - "score": 0.38, - "latex": ":" - }, - { - "category_id": 13, - "poly": [ - 1148, - 1944, - 1162, - 1944, - 1162, - 1961, - 1148, - 1961 - ], - "score": 0.31, - "latex": ":" - }, - { - "category_id": 15, - "poly": [ - 798.0, - 1943.0, - 1147.0, - 1943.0, - 1147.0, - 1968.0, - 798.0, - 1968.0 - ], - "score": 0.95, - "text": "Fig 4 SSCP analysis of FHIT exon 4. T" - }, - { - "category_id": 15, - "poly": [ - 1163.0, - 1943.0, - 1425.0, - 1943.0, - 1425.0, - 1968.0, - 1163.0, - 1968.0 - ], - "score": 0.96, - "text": "Tumor tissue ; N :Corresponding" - }, - { - "category_id": 15, - "poly": [ - 755.0, - 1979.0, - 1189.0, - 1979.0, - 1189.0, - 2004.0, - 755.0, - 2004.0 - ], - "score": 0.92, - "text": "normal tissue ; M : PBR322/Hae II Marker ; ssDNA" - }, - { - "category_id": 15, - "poly": [ - 1207.0, - 1979.0, - 1422.0, - 1979.0, - 1422.0, - 2004.0, - 1207.0, - 2004.0 - ], - "score": 0.97, - "text": "Single-stranded DNA ; ds-" - }, - { - "category_id": 15, - "poly": [ - 755.0, - 2015.0, - 797.0, - 2015.0, - 797.0, - 2038.0, - 755.0, - 2038.0 - ], - "score": 1.0, - "text": "DNA" - }, - { - "category_id": 15, - "poly": [ - 814.0, - 2015.0, - 996.0, - 2015.0, - 996.0, - 2038.0, - 814.0, - 2038.0 - ], - "score": 0.98, - "text": "Double-stranded DNA" - }, - { - "category_id": 15, - "poly": [ - 71.0, - 1880.0, - 698.0, - 1880.0, - 698.0, - 1902.0, - 71.0, - 1902.0 - ], - "score": 0.96, - "text": "Fig 2Alterations of PCR amplified products of FHIT exon 3,4,5 and" - }, - { - "category_id": 15, - "poly": [ - 28.0, - 1916.0, - 399.0, - 1916.0, - 399.0, - 1937.0, - 28.0, - 1937.0 - ], - "score": 0.98, - "text": "microsatellite marker D3S1300、D3S1312.A" - }, - { - "category_id": 15, - "poly": [ - 417.0, - 1916.0, - 701.0, - 1916.0, - 701.0, - 1937.0, - 417.0, - 1937.0 - ], - "score": 0.9, - "text": "Deletion of exon5(arrows);B :" - }, - { - "category_id": 15, - "poly": [ - 29.0, - 1953.0, - 700.0, - 1953.0, - 700.0, - 1974.0, - 29.0, - 1974.0 - ], - "score": 0.95, - "text": "Deletion of exon 3 A( arrows);C : Deletion of microsatellite marker D3S1300," - }, - { - "category_id": 15, - "poly": [ - 28.0, - 1989.0, - 134.0, - 1989.0, - 134.0, - 2014.0, - 28.0, - 2014.0 - ], - "score": 1.0, - "text": "D3S1312.T" - }, - { - "category_id": 15, - "poly": [ - 149.0, - 1989.0, - 696.0, - 1989.0, - 696.0, - 2014.0, - 149.0, - 2014.0 - ], - "score": 0.96, - "text": "Tumor ; N : Corresponding normal tissue ; L : Corresponding lymph" - }, - { - "category_id": 15, - "poly": [ - 30.0, - 2027.0, - 634.0, - 2027.0, - 634.0, - 2047.0, - 30.0, - 2047.0 - ], - "score": 0.94, - "text": "node tissue;M :DL2000 DNA marker;L1:Lewis ;A :A549;S SPAC-1" - }, - { - "category_id": 15, - "poly": [ - 801.0, - 1259.0, - 1427.0, - 1259.0, - 1427.0, - 1280.0, - 801.0, - 1280.0 - ], - "score": 0.94, - "text": "Fig 3SSCP analysis of FHIT exon 3.The arrow indicateda deletion of" - }, - { - "category_id": 15, - "poly": [ - 757.0, - 1294.0, - 1424.0, - 1294.0, - 1424.0, - 1318.0, - 757.0, - 1318.0 - ], - "score": 0.96, - "text": "exon 3 of 41T. T : Tumor tissue ; N : Corresponding normal tissue ; M PBR322/" - }, - { - "category_id": 15, - "poly": [ - 755.0, - 1329.0, - 1218.0, - 1329.0, - 1218.0, - 1355.0, - 755.0, - 1355.0 - ], - "score": 0.95, - "text": "Hae Il Marker / ssDNA : Single-stranded DNA ; dsDNA" - }, - { - "category_id": 15, - "poly": [ - 1236.0, - 1329.0, - 1418.0, - 1329.0, - 1418.0, - 1355.0, - 1236.0, - 1355.0 - ], - "score": 1.0, - "text": "Double-strandedDNA" - }, - { - "category_id": 15, - "poly": [ - 910.0, - 1217.0, - 1269.0, - 1217.0, - 1269.0, - 1241.0, - 910.0, - 1241.0 - ], - "score": 1.0, - "text": "图3FHIT基因外显子3的SSCP分析" - }, - { - "category_id": 15, - "poly": [ - 909.0, - 1904.0, - 1269.0, - 1904.0, - 1269.0, - 1927.0, - 909.0, - 1927.0 - ], - "score": 1.0, - "text": "图4FHIT基因外显子4的SSCP分析" - }, - { - "category_id": 15, - "poly": [ - 374.0, - 563.0, - 1077.0, - 563.0, - 1077.0, - 583.0, - 374.0, - 583.0 - ], - "score": 0.99, - "text": "图1FHIT基因外显子3、4、5、8和微卫星灶的PCR扩增产物琼脂糖电泳图" - }, - { - "category_id": 15, - "poly": [ - 1351.0, - 81.0, - 1376.0, - 81.0, - 1376.0, - 102.0, - 1351.0, - 102.0 - ], - "score": 1.0, - "text": "13" - }, - { - "category_id": 15, - "poly": [ - 207.0, - 600.0, - 1245.0, - 600.0, - 1245.0, - 624.0, - 207.0, - 624.0 - ], - "score": 0.96, - "text": "Fig 1 Agarose electrophoresis of PCR products of exor( A)3 ,4 ,5 ,8 and three microsatellite markers( B)of FHIT gene" - }, - { - "category_id": 15, - "poly": [ - 309.0, - 634.0, - 1142.0, - 634.0, - 1142.0, - 662.0, - 309.0, - 662.0 - ], - "score": 0.97, - "text": "M1 :DL2000 DNA marker ; M2 PBR322/Hae Il marker ; T :Tumor ; N :Corresponding normal tissue" - }, - { - "category_id": 15, - "poly": [ - 73.0, - 1840.0, - 651.0, - 1840.0, - 651.0, - 1864.0, - 73.0, - 1864.0 - ], - "score": 1.0, - "text": "图2FHIT基因外显子和微卫星灶PCR扩增产物缺失电泳图" - }, - { - "category_id": 15, - "poly": [ - 207.0, - 600.0, - 1245.0, - 600.0, - 1245.0, - 625.0, - 207.0, - 625.0 - ], - "score": 0.96, - "text": "Fig 1 Agarose electrophoresis of PCR products of exor A)3 ,4 ,5 ,8 and three microsatellite markers( B)of FHIT gene" - }, - { - "category_id": 15, - "poly": [ - 309.0, - 635.0, - 1142.0, - 635.0, - 1142.0, - 661.0, - 309.0, - 661.0 - ], - "score": 0.97, - "text": "M1 :DL2000 DNA marker ; M2 PBR322/Hae Il marker ; T Tumor ; N :Corresponding normal tissue" - } - ], - "page_info": { - "page_no": 0, - "height": 2080, - "width": 1472 - } - } -] diff --git a/tests/unittest/test_model/assets/test_01.pdf b/tests/unittest/test_model/assets/test_01.pdf deleted file mode 100644 index e4500499..00000000 Binary files a/tests/unittest/test_model/assets/test_01.pdf and /dev/null differ diff --git a/tests/unittest/test_model/assets/test_02.model.json b/tests/unittest/test_model/assets/test_02.model.json deleted file mode 100644 index 0a308987..00000000 --- a/tests/unittest/test_model/assets/test_02.model.json +++ /dev/null @@ -1,17564 +0,0 @@ -[ - { - "layout_dets": [ - { - "category_id": 2, - "poly": [ - 118.60955810546875, - 198.658203125, - 267.46044921875, - 198.658203125, - 267.46044921875, - 363.13531494140625, - 118.60955810546875, - 363.13531494140625 - ], - "score": 0.9999977946281433 - }, - { - "category_id": 2, - "poly": [ - 1082.397216796875, - 196.80734252929688, - 1380.781005859375, - 196.80734252929688, - 1380.781005859375, - 394.29400634765625, - 1082.397216796875, - 394.29400634765625 - ], - "score": 0.9999669790267944 - }, - { - "category_id": 2, - "poly": [ - 117.83770751953125, - 1687.9595947265625, - 1381.0810546875, - 1687.9595947265625, - 1381.0810546875, - 1765.1331787109375, - 117.83770751953125, - 1765.1331787109375 - ], - "score": 0.9999470114707947 - }, - { - "category_id": 1, - "poly": [ - 212.48126220703125, - 622.498291015625, - 1290.409423828125, - 622.498291015625, - 1290.409423828125, - 731.6904296875, - 212.48126220703125, - 731.6904296875 - ], - "score": 0.9999340772628784 - }, - { - "category_id": 0, - "poly": [ - 244.640625, - 473.26220703125, - 1256.727294921875, - 473.26220703125, - 1256.727294921875, - 519.3681640625, - 244.640625, - 519.3681640625 - ], - "score": 0.9999324083328247 - }, - { - "category_id": 1, - "poly": [ - 391.2038269042969, - 752.9738159179688, - 1106.6009521484375, - 752.9738159179688, - 1106.6009521484375, - 773.8135986328125, - 391.2038269042969, - 773.8135986328125 - ], - "score": 0.999659538269043 - }, - { - "category_id": 1, - "poly": [ - 116.69463348388672, - 912.680908203125, - 1383.009521484375, - 912.680908203125, - 1383.009521484375, - 1526.5164794921875, - 116.69463348388672, - 1526.5164794921875 - ], - "score": 0.9996497631072998 - }, - { - "category_id": 2, - "poly": [ - 556.8428344726562, - 344.6543273925781, - 942.172119140625, - 344.6543273925781, - 942.172119140625, - 368.55316162109375, - 556.8428344726562, - 368.55316162109375 - ], - "score": 0.9996120929718018 - }, - { - "category_id": 0, - "poly": [ - 118.258544921875, - 864.1715087890625, - 210.07864379882812, - 864.1715087890625, - 210.07864379882812, - 889.3430786132812, - 118.258544921875, - 889.3430786132812 - ], - "score": 0.999344527721405 - }, - { - "category_id": 1, - "poly": [ - 241.03976440429688, - 551.4166870117188, - 1255.7645263671875, - 551.4166870117188, - 1255.7645263671875, - 595.4854736328125, - 241.03976440429688, - 595.4854736328125 - ], - "score": 0.9993418455123901 - }, - { - "category_id": 2, - "poly": [ - 117.89942169189453, - 1794.3287353515625, - 772.7922973632812, - 1794.3287353515625, - 772.7922973632812, - 1842.42919921875, - 117.89942169189453, - 1842.42919921875 - ], - "score": 0.9991039633750916 - }, - { - "category_id": 2, - "poly": [ - 515.6521606445312, - 193.61793518066406, - 985.9738159179688, - 193.61793518066406, - 985.9738159179688, - 291.953125, - 515.6521606445312, - 291.953125 - ], - "score": 0.9970645904541016 - }, - { - "category_id": 1, - "poly": [ - 117.53016662597656, - 1570.8095703125, - 865.2678833007812, - 1570.8095703125, - 865.2678833007812, - 1593.182861328125, - 117.53016662597656, - 1593.182861328125 - ], - "score": 0.9883127212524414 - }, - { - "category_id": 1, - "poly": [ - 119.48209381103516, - 1508.9144287109375, - 539.9886474609375, - 1508.9144287109375, - 539.9886474609375, - 1534.0999755859375, - 119.48209381103516, - 1534.0999755859375 - ], - "score": 0.8136677742004395 - }, - { - "category_id": 2, - "poly": [ - 1083.8271484375, - 374.8357238769531, - 1380.78369140625, - 374.8357238769531, - 1380.78369140625, - 395.9932861328125, - 1083.8271484375, - 395.9932861328125 - ], - "score": 0.3611733317375183 - }, - { - "category_id": 2, - "poly": [ - 515.6149291992188, - 196.63461303710938, - 984.0328369140625, - 196.63461303710938, - 984.0328369140625, - 221.70213317871094, - 515.6149291992188, - 221.70213317871094 - ], - "score": 0.33345672488212585 - }, - { - "category_id": 13, - "poly": [ - 714, - 1383, - 767, - 1383, - 767, - 1411, - 714, - 1411 - ], - "score": 0.89, - "latex": "N_{\\mathrm{zero}}" - }, - { - "category_id": 13, - "poly": [ - 571, - 1351, - 636, - 1351, - 636, - 1380, - 571, - 1380 - ], - "score": 0.87, - "latex": "(N_{\\mathrm{zero}})" - }, - { - "category_id": 13, - "poly": [ - 398, - 1793, - 419, - 1793, - 419, - 1815, - 398, - 1815 - ], - "score": 0.75, - "latex": "\\circledcirc" - }, - { - "category_id": 13, - "poly": [ - 116, - 1509, - 140, - 1509, - 140, - 1533, - 116, - 1533 - ], - "score": 0.73, - "latex": "\\copyright" - }, - { - "category_id": 13, - "poly": [ - 315, - 1713, - 479, - 1713, - 479, - 1739, - 315, - 1739 - ], - "score": 0.36, - "latex": "+61\\ 3\\ 9450\\ 8719" - }, - { - "category_id": 13, - "poly": [ - 148, - 1743, - 166, - 1743, - 166, - 1765, - 148, - 1765 - ], - "score": 0.35, - "latex": "E" - }, - { - "category_id": 13, - "poly": [ - 369, - 1743, - 387, - 1743, - 387, - 1764, - 369, - 1764 - ], - "score": 0.26, - "latex": "@" - }, - { - "category_id": 15, - "poly": [ - 124.0, - 343.0, - 263.0, - 343.0, - 263.0, - 364.0, - 124.0, - 364.0 - ], - "score": 0.93, - "text": "ELSEVIER" - }, - { - "category_id": 15, - "poly": [ - 1168.0, - 218.0, - 1284.0, - 218.0, - 1284.0, - 251.0, - 1168.0, - 251.0 - ], - "score": 0.99, - "text": "Journal" - }, - { - "category_id": 15, - "poly": [ - 1173.0, - 259.0, - 1206.0, - 259.0, - 1206.0, - 287.0, - 1173.0, - 287.0 - ], - "score": 0.93, - "text": "Of" - }, - { - "category_id": 15, - "poly": [ - 1163.0, - 296.0, - 1376.0, - 296.0, - 1376.0, - 346.0, - 1163.0, - 346.0 - ], - "score": 1.0, - "text": "Hydrology" - }, - { - "category_id": 15, - "poly": [ - 1084.0, - 376.0, - 1379.0, - 376.0, - 1379.0, - 393.0, - 1084.0, - 393.0 - ], - "score": 0.99, - "text": "www.elsevier.com/locate/jhydrol" - }, - { - "category_id": 15, - "poly": [ - 134.0, - 1688.0, - 1377.0, - 1688.0, - 1377.0, - 1715.0, - 134.0, - 1715.0 - ], - "score": 0.99, - "text": "* Corresponding author. Address: Forest Science Centre, Department of Sustainability and Environment, P.O. Box 137, Heidelberg, Vic." - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1718.0, - 314.0, - 1718.0, - 314.0, - 1741.0, - 118.0, - 1741.0 - ], - "score": 0.99, - "text": "3084,Australia.Tel.:" - }, - { - "category_id": 15, - "poly": [ - 480.0, - 1718.0, - 701.0, - 1718.0, - 701.0, - 1741.0, - 480.0, - 1741.0 - ], - "score": 0.98, - "text": ";fax:+61394508644." - }, - { - "category_id": 15, - "poly": [ - 167.0, - 1748.0, - 655.0, - 1748.0, - 655.0, - 1768.0, - 167.0, - 1768.0 - ], - "score": 0.98, - "text": "-mailaddress:patrickl@unimelb.edu.au(P.N.J.Lane)." - }, - { - "category_id": 15, - "poly": [ - 211.0, - 623.0, - 1285.0, - 623.0, - 1285.0, - 653.0, - 211.0, - 653.0 - ], - "score": 0.97, - "text": "aSchool of Forest and EcosystemStudies,University ofMelbourne,P.O.Box 137,Heidelberg,Victoria 3084,Australia" - }, - { - "category_id": 15, - "poly": [ - 457.0, - 649.0, - 1038.0, - 649.0, - 1038.0, - 679.0, - 457.0, - 679.0 - ], - "score": 0.98, - "text": "bCSIRODivision of Land and Water,Canberra,ACT,Australia" - }, - { - "category_id": 15, - "poly": [ - 368.0, - 676.0, - 1127.0, - 676.0, - 1127.0, - 709.0, - 368.0, - 709.0 - ], - "score": 0.98, - "text": "cCooperative Research Centre for Catchment Hydrology, Canberra, ACT, Australia" - }, - { - "category_id": 15, - "poly": [ - 303.0, - 704.0, - 1198.0, - 704.0, - 1198.0, - 739.0, - 303.0, - 739.0 - ], - "score": 0.96, - "text": "Department of Civil and Environmental Engineering, University of Melbourne, Victoria, Australia" - }, - { - "category_id": 15, - "poly": [ - 247.0, - 475.0, - 1252.0, - 475.0, - 1252.0, - 518.0, - 247.0, - 518.0 - ], - "score": 0.99, - "text": "The response of flow duration curves to afforestation" - }, - { - "category_id": 15, - "poly": [ - 389.0, - 754.0, - 1107.0, - 754.0, - 1107.0, - 775.0, - 389.0, - 775.0 - ], - "score": 0.99, - "text": "Received1October 2003;revised22December2004;accepted3January2005" - }, - { - "category_id": 15, - "poly": [ - 141.0, - 914.0, - 1380.0, - 914.0, - 1380.0, - 944.0, - 141.0, - 944.0 - ], - "score": 0.99, - "text": "The hydrologic effect of replacing pasture or other short crops with trees is reasonably well understood on a mean annual" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 948.0, - 1377.0, - 948.0, - 1377.0, - 972.0, - 120.0, - 972.0 - ], - "score": 0.98, - "text": "basis. The impact on flow regime, as described by the annual flow duration curve (FDC) is less certain. A method to assess the" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 979.0, - 1379.0, - 979.0, - 1379.0, - 1003.0, - 120.0, - 1003.0 - ], - "score": 0.98, - "text": "impact of plantation establishment on FDCs was developed. The starting point for the analyses was the assumption that rainfall" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1010.0, - 1379.0, - 1010.0, - 1379.0, - 1038.0, - 117.0, - 1038.0 - ], - "score": 1.0, - "text": "and vegetation age are the principal drivers of evapotranspiration. A key objective was to remove the variability in the rainfall" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1042.0, - 1377.0, - 1042.0, - 1377.0, - 1066.0, - 119.0, - 1066.0 - ], - "score": 0.98, - "text": "signal, leaving changes in streamflow solely attributable to the evapotranspiration of the plantation. A method was developed to" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1074.0, - 1379.0, - 1074.0, - 1379.0, - 1098.0, - 119.0, - 1098.0 - ], - "score": 0.97, - "text": "(1) fit a model to the observed annual time series of FDC percentiles; i.e. 1Oth percentile for each year of record with annual" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1106.0, - 1377.0, - 1106.0, - 1377.0, - 1130.0, - 119.0, - 1130.0 - ], - "score": 0.99, - "text": "rainfall and plantation age as parameters, (2) replace the annual rainfall variation with the long term mean to obtain climate" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1137.0, - 1379.0, - 1137.0, - 1379.0, - 1160.0, - 119.0, - 1160.0 - ], - "score": 0.96, - "text": "adjusted FDCs, and (3) quantify changes in FDC percentiles as plantations age. Data from 10 catchments from Australia, South" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1165.0, - 1379.0, - 1165.0, - 1379.0, - 1194.0, - 117.0, - 1194.0 - ], - "score": 0.98, - "text": "Africa and New Zealand were used. The model was able to represent flow variation for the majority of percentiles at eight of the" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1199.0, - 1379.0, - 1199.0, - 1379.0, - 1223.0, - 120.0, - 1223.0 - ], - "score": 0.98, - "text": "10 catchments, particularly for the 10-5Oth percentiles. The adjusted FDCs revealed variable patterns in flow reductions with" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1232.0, - 1377.0, - 1232.0, - 1377.0, - 1255.0, - 119.0, - 1255.0 - ], - "score": 0.97, - "text": "two types of responses(groups)being identified.Group1 catchments show a substantial increase in the number of zeroflow" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1261.0, - 1377.0, - 1261.0, - 1377.0, - 1285.0, - 119.0, - 1285.0 - ], - "score": 0.98, - "text": "days, with low flows being more affected than high fows. Group 2 catchments show a more uniform reduction in flows across" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1294.0, - 1380.0, - 1294.0, - 1380.0, - 1318.0, - 119.0, - 1318.0 - ], - "score": 0.98, - "text": "all percentiles. The differences may be partly explained by storage characteristics. The modelled flow reductions were in accord" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1324.0, - 1382.0, - 1324.0, - 1382.0, - 1350.0, - 119.0, - 1350.0 - ], - "score": 0.99, - "text": "with published results of paired catchment experiments. An additional analysis was performed to characterise the impact of" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1354.0, - 570.0, - 1354.0, - 570.0, - 1382.0, - 117.0, - 1382.0 - ], - "score": 0.95, - "text": "afforestation on thenumber ofzeroflowdays" - }, - { - "category_id": 15, - "poly": [ - 637.0, - 1354.0, - 1380.0, - 1354.0, - 1380.0, - 1382.0, - 637.0, - 1382.0 - ], - "score": 0.99, - "text": "for the catchments in group 1. This model performed particularly well, and" - }, - { - "category_id": 15, - "poly": [ - 116.0, - 1385.0, - 713.0, - 1385.0, - 713.0, - 1414.0, - 116.0, - 1414.0 - ], - "score": 0.99, - "text": "when adjusted for climate, indicated a significant increase in" - }, - { - "category_id": 15, - "poly": [ - 768.0, - 1385.0, - 1379.0, - 1385.0, - 1379.0, - 1414.0, - 768.0, - 1414.0 - ], - "score": 0.98, - "text": ".The zero flow day method could be used to determine change" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1420.0, - 1379.0, - 1420.0, - 1379.0, - 1444.0, - 117.0, - 1444.0 - ], - "score": 0.99, - "text": "in the occurrence of any given flow in response to afforestation. The methods used in this study proved satisfactory in removing" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1452.0, - 1379.0, - 1452.0, - 1379.0, - 1476.0, - 119.0, - 1476.0 - ], - "score": 0.99, - "text": "the rainfall variability, and have added useful insight into the hydrologic impacts of plantation establishment. This approach" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1483.0, - 1376.0, - 1483.0, - 1376.0, - 1506.0, - 119.0, - 1506.0 - ], - "score": 0.97, - "text": "provides a methodologyfor understanding catchment response to afforestation,where paired catchment data is not available." - }, - { - "category_id": 15, - "poly": [ - 141.0, - 1512.0, - 536.0, - 1512.0, - 536.0, - 1531.0, - 141.0, - 1531.0 - ], - "score": 0.91, - "text": "2nn5FlcevierRVAllriohtsrecerved" - }, - { - "category_id": 15, - "poly": [ - 559.0, - 346.0, - 938.0, - 346.0, - 938.0, - 369.0, - 559.0, - 369.0 - ], - "score": 0.97, - "text": "Journalof Hydrology 310(2005)253-265" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 864.0, - 212.0, - 864.0, - 212.0, - 888.0, - 117.0, - 888.0 - ], - "score": 1.0, - "text": "Abstract" - }, - { - "category_id": 15, - "poly": [ - 235.0, - 547.0, - 1253.0, - 547.0, - 1253.0, - 608.0, - 235.0, - 608.0 - ], - "score": 0.94, - "text": "Patrick N.J. Laneac,*, Alice E. Bestb.c.d, Klaus Hickelb.c, Lu Zhangb." - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1794.0, - 397.0, - 1794.0, - 397.0, - 1817.0, - 117.0, - 1817.0 - ], - "score": 0.97, - "text": "0022-1694/$ -see front matter" - }, - { - "category_id": 15, - "poly": [ - 420.0, - 1794.0, - 770.0, - 1794.0, - 770.0, - 1817.0, - 420.0, - 1817.0 - ], - "score": 0.98, - "text": "2005 Elsevier B.V.All rights reserved" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1824.0, - 422.0, - 1824.0, - 422.0, - 1842.0, - 119.0, - 1842.0 - ], - "score": 0.99, - "text": "doi:10.1016/j.jhydrol.2005.01.006" - }, - { - "category_id": 15, - "poly": [ - 517.0, - 193.0, - 984.0, - 193.0, - 984.0, - 220.0, - 517.0, - 220.0 - ], - "score": 0.98, - "text": "Available online atwww.sciencedirect.com" - }, - { - "category_id": 15, - "poly": [ - 601.0, - 248.0, - 723.0, - 248.0, - 723.0, - 269.0, - 601.0, - 269.0 - ], - "score": 0.99, - "text": "SCIENCE" - }, - { - "category_id": 15, - "poly": [ - 791.0, - 248.0, - 897.0, - 248.0, - 897.0, - 267.0, - 791.0, - 267.0 - ], - "score": 0.97, - "text": "OIRECT" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1572.0, - 865.0, - 1572.0, - 865.0, - 1595.0, - 118.0, - 1595.0 - ], - "score": 0.98, - "text": "Keywords: Afforestation; Flow duration curves; Flow reduction;Paired catchments" - }, - { - "category_id": 15, - "poly": [ - 141.0, - 1512.0, - 537.0, - 1512.0, - 537.0, - 1535.0, - 141.0, - 1535.0 - ], - "score": 0.98, - "text": "2005 Elsevier B.V.All rights reserved" - }, - { - "category_id": 15, - "poly": [ - 1084.0, - 374.0, - 1381.0, - 374.0, - 1381.0, - 396.0, - 1084.0, - 396.0 - ], - "score": 1.0, - "text": "www.elsevier.com/locate/jhydrol" - }, - { - "category_id": 15, - "poly": [ - 519.0, - 198.0, - 981.0, - 198.0, - 981.0, - 220.0, - 519.0, - 220.0 - ], - "score": 0.99, - "text": "Availableonlineatwww.sciencedirect.com" - } - ], - "page_info": { - "page_no": 0, - "height": 2064, - "width": 1512 - } - }, - { - "layout_dets": [ - { - "category_id": 4, - "poly": [ - 793.3238525390625, - 764.6008911132812, - 1394.982177734375, - 764.6008911132812, - 1394.982177734375, - 817.2584228515625, - 793.3238525390625, - 817.2584228515625 - ], - "score": 0.9999980926513672 - }, - { - "category_id": 1, - "poly": [ - 794.8445434570312, - 847.7525024414062, - 1396.7862548828125, - 847.7525024414062, - 1396.7862548828125, - 1280.268310546875, - 794.8445434570312, - 1280.268310546875 - ], - "score": 0.9999948740005493 - }, - { - "category_id": 1, - "poly": [ - 794.4091796875, - 1281.1240234375, - 1397.727783203125, - 1281.1240234375, - 1397.727783203125, - 1847.862060546875, - 794.4091796875, - 1847.862060546875 - ], - "score": 0.9999915957450867 - }, - { - "category_id": 3, - "poly": [ - 800.3482055664062, - 254.34396362304688, - 1385.85546875, - 254.34396362304688, - 1385.85546875, - 741.2379760742188, - 800.3482055664062, - 741.2379760742188 - ], - "score": 0.9999874830245972 - }, - { - "category_id": 1, - "poly": [ - 131.33212280273438, - 1017.2642211914062, - 731.5430297851562, - 1017.2642211914062, - 731.5430297851562, - 1848.0374755859375, - 131.33212280273438, - 1848.0374755859375 - ], - "score": 0.9999839663505554 - }, - { - "category_id": 1, - "poly": [ - 132.01792907714844, - 317.6101379394531, - 731.1533813476562, - 317.6101379394531, - 731.1533813476562, - 1015.9430541992188, - 132.01792907714844, - 1015.9430541992188 - ], - "score": 0.9999791979789734 - }, - { - "category_id": 0, - "poly": [ - 130.92127990722656, - 250.8260040283203, - 312.45001220703125, - 250.8260040283203, - 312.45001220703125, - 284.91973876953125, - 130.92127990722656, - 284.91973876953125 - ], - "score": 0.9999523162841797 - }, - { - "category_id": 2, - "poly": [ - 130.0436248779297, - 194.7170867919922, - 166.79232788085938, - 194.7170867919922, - 166.79232788085938, - 215.29795837402344, - 130.0436248779297, - 215.29795837402344 - ], - "score": 0.9999291300773621 - }, - { - "category_id": 2, - "poly": [ - 480.5660400390625, - 194.7841339111328, - 1045.443115234375, - 194.7841339111328, - 1045.443115234375, - 218.79908752441406, - 480.5660400390625, - 218.79908752441406 - ], - "score": 0.9998185038566589 - }, - { - "category_id": 13, - "poly": [ - 984, - 1180, - 1065, - 1180, - 1065, - 1211, - 984, - 1211 - ], - "score": 0.88, - "latex": "<\\!20\\%" - }, - { - "category_id": 13, - "poly": [ - 128, - 1415, - 183, - 1415, - 183, - 1445, - 128, - 1445 - ], - "score": 0.86, - "latex": "95\\%" - }, - { - "category_id": 13, - "poly": [ - 573, - 618, - 723, - 618, - 723, - 649, - 573, - 649 - ], - "score": 0.67, - "latex": "400{-}500\\ \\mathrm{mm}" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 768.0, - 1390.0, - 768.0, - 1390.0, - 790.0, - 796.0, - 790.0 - ], - "score": 0.96, - "text": "Fig.1.Annual flow duration curves of daily flows from Pine Creek" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 796.0, - 993.0, - 796.0, - 993.0, - 815.0, - 796.0, - 815.0 - ], - "score": 0.99, - "text": "Australia,1989-2000." - }, - { - "category_id": 15, - "poly": [ - 796.0, - 853.0, - 1392.0, - 853.0, - 1392.0, - 877.0, - 796.0, - 877.0 - ], - "score": 0.97, - "text": "apply on a seasonal or shorter scale.Further, the" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 886.0, - 1391.0, - 886.0, - 1391.0, - 912.0, - 797.0, - 912.0 - ], - "score": 0.98, - "text": "observed impacts of any land use change on flows may" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 920.0, - 1391.0, - 920.0, - 1391.0, - 944.0, - 796.0, - 944.0 - ], - "score": 0.96, - "text": "beexaggerated or understated depending onthe" - }, - { - "category_id": 15, - "poly": [ - 794.0, - 952.0, - 1393.0, - 952.0, - 1393.0, - 978.0, - 794.0, - 978.0 - ], - "score": 0.96, - "text": "prevailing climate.Observationsof flowduring" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 987.0, - 1392.0, - 987.0, - 1392.0, - 1011.0, - 796.0, - 1011.0 - ], - "score": 0.95, - "text": "extended wet or dry spells, or with high annual" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1021.0, - 1392.0, - 1021.0, - 1392.0, - 1045.0, - 797.0, - 1045.0 - ], - "score": 0.99, - "text": "variability can obscure the real impacts. Fig. 1 plots" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1053.0, - 1392.0, - 1053.0, - 1392.0, - 1077.0, - 796.0, - 1077.0 - ], - "score": 0.97, - "text": "annual FDCs over12years ofplantationgrowthforone" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1086.0, - 1391.0, - 1086.0, - 1391.0, - 1109.0, - 797.0, - 1109.0 - ], - "score": 0.97, - "text": "of thecatchmentsusedin thisstudy,Pine Creek.The" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1120.0, - 1390.0, - 1120.0, - 1390.0, - 1145.0, - 796.0, - 1145.0 - ], - "score": 0.94, - "text": "net change inflow is obscured byrainfallvariability:" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1155.0, - 1391.0, - 1155.0, - 1391.0, - 1175.0, - 796.0, - 1175.0 - ], - "score": 0.99, - "text": "e.g.thegreatestchangeintheFDCisin1996,withthe" - }, - { - "category_id": 15, - "poly": [ - 798.0, - 1187.0, - 983.0, - 1187.0, - 983.0, - 1210.0, - 798.0, - 1210.0 - ], - "score": 0.99, - "text": "streamflowing" - }, - { - "category_id": 15, - "poly": [ - 1066.0, - 1187.0, - 1391.0, - 1187.0, - 1391.0, - 1210.0, - 1066.0, - 1210.0 - ], - "score": 1.0, - "text": "ofthetime.Thismaybe" - }, - { - "category_id": 15, - "poly": [ - 798.0, - 1221.0, - 1389.0, - 1221.0, - 1389.0, - 1244.0, - 798.0, - 1244.0 - ], - "score": 0.96, - "text": "comparedwith2o00,wherethereissubstantially" - }, - { - "category_id": 15, - "poly": [ - 795.0, - 1250.0, - 940.0, - 1250.0, - 940.0, - 1281.0, - 795.0, - 1281.0 - ], - "score": 1.0, - "text": "higherflows." - }, - { - "category_id": 15, - "poly": [ - 832.0, - 1287.0, - 1393.0, - 1287.0, - 1393.0, - 1310.0, - 832.0, - 1310.0 - ], - "score": 0.98, - "text": "Thispaperpresentstheresultsof aproject aimed at" - }, - { - "category_id": 15, - "poly": [ - 798.0, - 1321.0, - 1394.0, - 1321.0, - 1394.0, - 1345.0, - 798.0, - 1345.0 - ], - "score": 0.99, - "text": "quantifyingchangesinannualflowregimeof" - }, - { - "category_id": 15, - "poly": [ - 795.0, - 1353.0, - 1393.0, - 1353.0, - 1393.0, - 1380.0, - 795.0, - 1380.0 - ], - "score": 0.98, - "text": "catchments following plantation establishment. The" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1389.0, - 1392.0, - 1389.0, - 1392.0, - 1411.0, - 797.0, - 1411.0 - ], - "score": 0.99, - "text": "flowregimeisrepresentedbytheflowdurationcurve" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1420.0, - 1393.0, - 1420.0, - 1393.0, - 1443.0, - 797.0, - 1443.0 - ], - "score": 1.0, - "text": "(FDC).Thekeyassumptionwasthatrainfalland" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1453.0, - 1391.0, - 1453.0, - 1391.0, - 1479.0, - 796.0, - 1479.0 - ], - "score": 0.98, - "text": "forest age are the principal drivers of evapotranspira-" - }, - { - "category_id": 15, - "poly": [ - 795.0, - 1487.0, - 1394.0, - 1487.0, - 1394.0, - 1513.0, - 795.0, - 1513.0 - ], - "score": 0.97, - "text": "tion. For any generalisation of response of the FDC to" - }, - { - "category_id": 15, - "poly": [ - 799.0, - 1521.0, - 1393.0, - 1521.0, - 1393.0, - 1545.0, - 799.0, - 1545.0 - ], - "score": 0.98, - "text": "vegetation change, the variation in the annual climate" - }, - { - "category_id": 15, - "poly": [ - 798.0, - 1554.0, - 1393.0, - 1554.0, - 1393.0, - 1577.0, - 798.0, - 1577.0 - ], - "score": 1.0, - "text": "signalmustberemoved.Thetime-testedsolutionto" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1588.0, - 1393.0, - 1588.0, - 1393.0, - 1612.0, - 797.0, - 1612.0 - ], - "score": 0.99, - "text": "this problem is the paired-catchment (control versus" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1620.0, - 1393.0, - 1620.0, - 1393.0, - 1645.0, - 796.0, - 1645.0 - ], - "score": 0.96, - "text": "treatment)experiment. The benefits in such studies" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1654.0, - 1391.0, - 1654.0, - 1391.0, - 1677.0, - 796.0, - 1677.0 - ], - "score": 1.0, - "text": "aremanifold:unambiguousmeasuresoftrends," - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1688.0, - 1391.0, - 1688.0, - 1391.0, - 1712.0, - 796.0, - 1712.0 - ], - "score": 0.96, - "text": "insights intothe processes driving those trends," - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1722.0, - 1391.0, - 1722.0, - 1391.0, - 1744.0, - 796.0, - 1744.0 - ], - "score": 1.0, - "text": "excellentopportunitiesformodelparameterisation" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1752.0, - 1390.0, - 1752.0, - 1390.0, - 1777.0, - 796.0, - 1777.0 - ], - "score": 1.0, - "text": "andvalidation.Howeverthesedataarenotreadily" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1787.0, - 1391.0, - 1787.0, - 1391.0, - 1811.0, - 797.0, - 1811.0 - ], - "score": 0.95, - "text": "available for the range of treamtments and environ-" - }, - { - "category_id": 15, - "poly": [ - 798.0, - 1822.0, - 1391.0, - 1822.0, - 1391.0, - 1845.0, - 798.0, - 1845.0 - ], - "score": 0.97, - "text": "ments required.Consequently, the aims of this project" - }, - { - "category_id": 15, - "poly": [ - 166.0, - 1022.0, - 728.0, - 1022.0, - 728.0, - 1047.0, - 166.0, - 1047.0 - ], - "score": 0.96, - "text": "Zhang et al.(1999,2001)developed simple and" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1057.0, - 728.0, - 1057.0, - 728.0, - 1081.0, - 133.0, - 1081.0 - ], - "score": 0.95, - "text": "easily parameterised models topredict changes in" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1089.0, - 728.0, - 1089.0, - 728.0, - 1113.0, - 132.0, - 1113.0 - ], - "score": 0.98, - "text": "mean annual flows following afforestation. However," - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1121.0, - 727.0, - 1121.0, - 727.0, - 1147.0, - 132.0, - 1147.0 - ], - "score": 0.98, - "text": "there is a need to consider the annual flow regime as the" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1158.0, - 727.0, - 1158.0, - 727.0, - 1181.0, - 133.0, - 1181.0 - ], - "score": 1.0, - "text": "relativechangesinhighandlowflowsmayhave" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1189.0, - 727.0, - 1189.0, - 727.0, - 1214.0, - 131.0, - 1214.0 - ], - "score": 0.97, - "text": "considerable site specific and downstream impacts." - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1221.0, - 728.0, - 1221.0, - 728.0, - 1246.0, - 133.0, - 1246.0 - ], - "score": 0.94, - "text": "Sikka et al.(2003)recently showed a change from" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1256.0, - 728.0, - 1256.0, - 728.0, - 1279.0, - 132.0, - 1279.0 - ], - "score": 1.0, - "text": "grasslandtoEucalyptusglobulusplantationsinIndia" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1288.0, - 726.0, - 1288.0, - 726.0, - 1313.0, - 132.0, - 1313.0 - ], - "score": 0.99, - "text": "decreasedalowflowindexbyafactoroftwoduringthe" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1321.0, - 729.0, - 1321.0, - 729.0, - 1346.0, - 131.0, - 1346.0 - ], - "score": 0.96, - "text": "first rotation (9 years), and by 3.75 during the second" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1355.0, - 727.0, - 1355.0, - 727.0, - 1379.0, - 133.0, - 1379.0 - ], - "score": 0.98, - "text": "rotation, with more subdued impact on peak flows. The" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1387.0, - 729.0, - 1387.0, - 729.0, - 1414.0, - 131.0, - 1414.0 - ], - "score": 0.97, - "text": "index was defined as the 10 day average flow exceeded" - }, - { - "category_id": 15, - "poly": [ - 184.0, - 1421.0, - 727.0, - 1421.0, - 727.0, - 1446.0, - 184.0, - 1446.0 - ], - "score": 0.96, - "text": "of thetime,obtained from analysis of10-dayflow" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1454.0, - 729.0, - 1454.0, - 729.0, - 1480.0, - 132.0, - 1480.0 - ], - "score": 0.95, - "text": "duration curves.Scott and Smith (1997) reported" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1488.0, - 729.0, - 1488.0, - 729.0, - 1515.0, - 131.0, - 1515.0 - ], - "score": 0.98, - "text": "proportionallygreater reductionsinlowflows" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1522.0, - 729.0, - 1522.0, - 729.0, - 1545.0, - 133.0, - 1545.0 - ], - "score": 0.97, - "text": "(75-1oothpercentiles)thanannualflowsfromSouth" - }, - { - "category_id": 15, - "poly": [ - 135.0, - 1556.0, - 728.0, - 1556.0, - 728.0, - 1576.0, - 135.0, - 1576.0 - ], - "score": 1.0, - "text": "Africanresearchcatchmentsunderconversionsfrom" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1590.0, - 729.0, - 1590.0, - 729.0, - 1610.0, - 132.0, - 1610.0 - ], - "score": 0.99, - "text": "grasstopineandeucalyptplantations,whileBosch" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1621.0, - 727.0, - 1621.0, - 727.0, - 1644.0, - 133.0, - 1644.0 - ], - "score": 0.99, - "text": "(1979)foundthegreatestreductioninseasonalflow" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1653.0, - 727.0, - 1653.0, - 727.0, - 1678.0, - 131.0, - 1678.0 - ], - "score": 1.0, - "text": "fromthesummerwetseason.FaheyandJackson" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1687.0, - 727.0, - 1687.0, - 727.0, - 1710.0, - 133.0, - 1710.0 - ], - "score": 0.99, - "text": "(1997)reportedthereductioninpeakflowswastwice" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1719.0, - 727.0, - 1719.0, - 727.0, - 1742.0, - 132.0, - 1742.0 - ], - "score": 0.99, - "text": "thatoftotalflowandlowflowsforpine afforestationin" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1755.0, - 728.0, - 1755.0, - 728.0, - 1778.0, - 132.0, - 1778.0 - ], - "score": 1.0, - "text": "NewZealand.Thegeneralisationsthatcanbedrawn" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1785.0, - 727.0, - 1785.0, - 727.0, - 1813.0, - 131.0, - 1813.0 - ], - "score": 1.0, - "text": "from annual analyses, where processes and hydrologic" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1822.0, - 728.0, - 1822.0, - 728.0, - 1845.0, - 133.0, - 1845.0 - ], - "score": 1.0, - "text": "responsesaretoacertainextentintegratedmaynot" - }, - { - "category_id": 15, - "poly": [ - 166.0, - 322.0, - 728.0, - 322.0, - 728.0, - 350.0, - 166.0, - 350.0 - ], - "score": 0.98, - "text": "Widespread afforestation through plantation estab-" - }, - { - "category_id": 15, - "poly": [ - 129.0, - 355.0, - 726.0, - 355.0, - 726.0, - 384.0, - 129.0, - 384.0 - ], - "score": 0.99, - "text": "lishment on non-forested land represents a potentially" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 391.0, - 726.0, - 391.0, - 726.0, - 416.0, - 133.0, - 416.0 - ], - "score": 1.0, - "text": "significantalterationofcatchmentevapotranspiration" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 426.0, - 728.0, - 426.0, - 728.0, - 449.0, - 133.0, - 449.0 - ], - "score": 1.0, - "text": "(ET).Usingdatacollatedfrommultiplecatchment" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 458.0, - 729.0, - 458.0, - 729.0, - 480.0, - 133.0, - 480.0 - ], - "score": 1.0, - "text": "studies,researchershavedemonstratedaconsistent" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 489.0, - 729.0, - 489.0, - 729.0, - 514.0, - 132.0, - 514.0 - ], - "score": 0.95, - "text": "difference in ET between forests and grass or short" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 524.0, - 729.0, - 524.0, - 729.0, - 546.0, - 133.0, - 546.0 - ], - "score": 0.99, - "text": "crops,andtherelationshipbetweenETandrainfallon" - }, - { - "category_id": 15, - "poly": [ - 129.0, - 557.0, - 728.0, - 557.0, - 728.0, - 579.0, - 129.0, - 579.0 - ], - "score": 0.96, - "text": "a meanannualbasis (Holmes andSinclair,1986;" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 588.0, - 727.0, - 588.0, - 727.0, - 616.0, - 131.0, - 616.0 - ], - "score": 0.95, - "text": "Vertessy and Bessard, 1999; Zhang et al., 1999," - }, - { - "category_id": 15, - "poly": [ - 132.0, - 622.0, - 572.0, - 622.0, - 572.0, - 648.0, - 132.0, - 648.0 - ], - "score": 0.96, - "text": "2001).Once annual rainfall exceeds" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 657.0, - 728.0, - 657.0, - 728.0, - 681.0, - 132.0, - 681.0 - ], - "score": 0.99, - "text": "there is an increasing divergence between forest and" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 691.0, - 728.0, - 691.0, - 728.0, - 713.0, - 131.0, - 713.0 - ], - "score": 0.97, - "text": "grasslandET(Zhangetal.,20o1).Researchfrom" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 724.0, - 728.0, - 724.0, - 728.0, - 748.0, - 133.0, - 748.0 - ], - "score": 0.96, - "text": "SouthAfrica inparticular has demonstratedflow" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 758.0, - 729.0, - 758.0, - 729.0, - 781.0, - 133.0, - 781.0 - ], - "score": 1.0, - "text": "reductionfollowingafforestationwithbothpineand" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 791.0, - 728.0, - 791.0, - 728.0, - 813.0, - 132.0, - 813.0 - ], - "score": 0.98, - "text": "eucalyptspecies(Bosch,1979;VanLilletal.,1980;" - }, - { - "category_id": 15, - "poly": [ - 134.0, - 824.0, - 729.0, - 824.0, - 729.0, - 847.0, - 134.0, - 847.0 - ], - "score": 0.99, - "text": "VanWyk,1987;BoschandVonGadow,1990;Scott" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 856.0, - 727.0, - 856.0, - 727.0, - 880.0, - 132.0, - 880.0 - ], - "score": 0.99, - "text": "and Smith, 1997; Scott et al., 2000). In regions, where" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 891.0, - 728.0, - 891.0, - 728.0, - 914.0, - 133.0, - 914.0 - ], - "score": 1.0, - "text": "waterisanincreasinglyvaluableresource,prediction" - }, - { - "category_id": 15, - "poly": [ - 134.0, - 922.0, - 727.0, - 922.0, - 727.0, - 946.0, - 134.0, - 946.0 - ], - "score": 0.97, - "text": "of the long-term hydrologic impact of afforestation is" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 957.0, - 728.0, - 957.0, - 728.0, - 980.0, - 132.0, - 980.0 - ], - "score": 1.0, - "text": "aprerequisitefortheoptimalplanningofcatchment" - }, - { - "category_id": 15, - "poly": [ - 130.0, - 987.0, - 232.0, - 987.0, - 232.0, - 1013.0, - 130.0, - 1013.0 - ], - "score": 1.0, - "text": "landuse." - }, - { - "category_id": 15, - "poly": [ - 130.0, - 253.0, - 310.0, - 253.0, - 310.0, - 282.0, - 130.0, - 282.0 - ], - "score": 1.0, - "text": "1. Introduction" - }, - { - "category_id": 15, - "poly": [ - 129.0, - 195.0, - 167.0, - 195.0, - 167.0, - 219.0, - 129.0, - 219.0 - ], - "score": 1.0, - "text": "254" - }, - { - "category_id": 15, - "poly": [ - 482.0, - 197.0, - 1040.0, - 197.0, - 1040.0, - 220.0, - 482.0, - 220.0 - ], - "score": 0.99, - "text": "P.N.J.Laneet al./JournalofHydrology310(2005)253-265" - } - ], - "page_info": { - "page_no": 1, - "height": 2064, - "width": 1512 - } - }, - { - "layout_dets": [ - { - "category_id": 0, - "poly": [ - 117.98583221435547, - 651.4143676757812, - 250.4243927001953, - 651.4143676757812, - 250.4243927001953, - 681.6177978515625, - 117.98583221435547, - 681.6177978515625 - ], - "score": 0.9999960660934448 - }, - { - "category_id": 1, - "poly": [ - 117.66859436035156, - 252.15028381347656, - 717.0852661132812, - 252.15028381347656, - 717.0852661132812, - 583.2984619140625, - 117.66859436035156, - 583.2984619140625 - ], - "score": 0.9999945163726807 - }, - { - "category_id": 1, - "poly": [ - 781.6583251953125, - 254.4632568359375, - 1380.35498046875, - 254.4632568359375, - 1380.35498046875, - 383.93988037109375, - 781.6583251953125, - 383.93988037109375 - ], - "score": 0.9999942779541016 - }, - { - "category_id": 1, - "poly": [ - 117.45108795166016, - 787.5255126953125, - 717.2050170898438, - 787.5255126953125, - 717.2050170898438, - 1283.052001953125, - 117.45108795166016, - 1283.052001953125 - ], - "score": 0.9999866485595703 - }, - { - "category_id": 1, - "poly": [ - 781.4449462890625, - 518.4725952148438, - 1381.476806640625, - 518.4725952148438, - 1381.476806640625, - 1115.634033203125, - 781.4449462890625, - 1115.634033203125 - ], - "score": 0.9999841451644897 - }, - { - "category_id": 1, - "poly": [ - 117.63248443603516, - 1283.588134765625, - 717.8546752929688, - 1283.588134765625, - 717.8546752929688, - 1846.96337890625, - 117.63248443603516, - 1846.96337890625 - ], - "score": 0.9999801516532898 - }, - { - "category_id": 1, - "poly": [ - 781.0757446289062, - 1281.677490234375, - 1381.9857177734375, - 1281.677490234375, - 1381.9857177734375, - 1846.426025390625, - 781.0757446289062, - 1846.426025390625 - ], - "score": 0.9999785423278809 - }, - { - "category_id": 0, - "poly": [ - 118.35875701904297, - 719.4396362304688, - 523.7080688476562, - 719.4396362304688, - 523.7080688476562, - 748.3139038085938, - 118.35875701904297, - 748.3139038085938 - ], - "score": 0.999972939491272 - }, - { - "category_id": 2, - "poly": [ - 1346.603759765625, - 195.0556182861328, - 1381.0526123046875, - 195.0556182861328, - 1381.0526123046875, - 216.44448852539062, - 1346.603759765625, - 216.44448852539062 - ], - "score": 0.9999720454216003 - }, - { - "category_id": 9, - "poly": [ - 1346.9273681640625, - 438.05438232421875, - 1379.6627197265625, - 438.05438232421875, - 1379.6627197265625, - 465.9045104980469, - 1346.9273681640625, - 465.9045104980469 - ], - "score": 0.999956488609314 - }, - { - "category_id": 8, - "poly": [ - 776.7713012695312, - 1153.820556640625, - 1201.1727294921875, - 1153.820556640625, - 1201.1727294921875, - 1238.2696533203125, - 776.7713012695312, - 1238.2696533203125 - ], - "score": 0.9999523162841797 - }, - { - "category_id": 9, - "poly": [ - 1347.7716064453125, - 1178.136474609375, - 1379.205810546875, - 1178.136474609375, - 1379.205810546875, - 1209.233154296875, - 1347.7716064453125, - 1209.233154296875 - ], - "score": 0.9999113082885742 - }, - { - "category_id": 2, - "poly": [ - 466.5557861328125, - 194.43609619140625, - 1031.927490234375, - 194.43609619140625, - 1031.927490234375, - 219.32997131347656, - 466.5557861328125, - 219.32997131347656 - ], - "score": 0.9998723864555359 - }, - { - "category_id": 8, - "poly": [ - 779.8624877929688, - 430.4825439453125, - 996.8544311523438, - 430.4825439453125, - 996.8544311523438, - 471.1011047363281, - 779.8624877929688, - 471.1011047363281 - ], - "score": 0.9997532367706299 - }, - { - "category_id": 14, - "poly": [ - 777, - 1156, - 1200, - 1156, - 1200, - 1237, - 777, - 1237 - ], - "score": 0.92, - "latex": "Q_{\\mathcal{U}}=a+b(\\Delta P)+\\frac{Y}{1+\\exp\\left(\\frac{T-T_{\\mathrm{half}}}{S}\\right)}" - }, - { - "category_id": 13, - "poly": [ - 1150, - 520, - 1201, - 520, - 1201, - 551, - 1150, - 551 - ], - "score": 0.9, - "latex": "f(P)" - }, - { - "category_id": 13, - "poly": [ - 1210, - 1384, - 1262, - 1384, - 1262, - 1414, - 1210, - 1414 - ], - "score": 0.9, - "latex": "T_{\\mathrm{half}}" - }, - { - "category_id": 13, - "poly": [ - 856, - 520, - 897, - 520, - 897, - 550, - 856, - 550 - ], - "score": 0.9, - "latex": "Q_{\\%}" - }, - { - "category_id": 13, - "poly": [ - 930, - 552, - 982, - 552, - 982, - 584, - 930, - 584 - ], - "score": 0.89, - "latex": "g(T)" - }, - { - "category_id": 13, - "poly": [ - 857, - 1285, - 898, - 1285, - 898, - 1315, - 857, - 1315 - ], - "score": 0.89, - "latex": "Q_{\\%}" - }, - { - "category_id": 13, - "poly": [ - 1196, - 1649, - 1278, - 1649, - 1278, - 1678, - 1196, - 1678 - ], - "score": 0.89, - "latex": "\\Delta P\\!=\\!0" - }, - { - "category_id": 13, - "poly": [ - 1270, - 1483, - 1311, - 1483, - 1311, - 1515, - 1270, - 1515 - ], - "score": 0.89, - "latex": "Q_{\\%}" - }, - { - "category_id": 13, - "poly": [ - 1259, - 1418, - 1301, - 1418, - 1301, - 1449, - 1259, - 1449 - ], - "score": 0.89, - "latex": "Q_{\\%}" - }, - { - "category_id": 13, - "poly": [ - 1075, - 1682, - 1140, - 1682, - 1140, - 1711, - 1075, - 1711 - ], - "score": 0.88, - "latex": "a\\!+\\!Y." - }, - { - "category_id": 13, - "poly": [ - 895, - 1483, - 976, - 1483, - 976, - 1512, - 895, - 1512 - ], - "score": 0.88, - "latex": "\\Delta P\\!=\\!0" - }, - { - "category_id": 13, - "poly": [ - 1206, - 1285, - 1252, - 1285, - 1252, - 1315, - 1206, - 1315 - ], - "score": 0.88, - "latex": "Q_{50}" - }, - { - "category_id": 13, - "poly": [ - 779, - 1682, - 821, - 1682, - 821, - 1714, - 779, - 1714 - ], - "score": 0.88, - "latex": "Q_{\\%}" - }, - { - "category_id": 13, - "poly": [ - 1313, - 1649, - 1374, - 1649, - 1374, - 1678, - 1313, - 1678 - ], - "score": 0.87, - "latex": "T\\!=\\!0" - }, - { - "category_id": 14, - "poly": [ - 777, - 432, - 997, - 432, - 997, - 470, - 777, - 470 - ], - "score": 0.83, - "latex": "Q_{\\mathcal{I}_{\\theta}}=f(P)+g(T)" - }, - { - "category_id": 13, - "poly": [ - 963, - 1350, - 1002, - 1350, - 1002, - 1378, - 963, - 1378 - ], - "score": 0.8, - "latex": "\\Delta P" - }, - { - "category_id": 13, - "poly": [ - 989, - 1318, - 1012, - 1318, - 1012, - 1345, - 989, - 1345 - ], - "score": 0.64, - "latex": "Y" - }, - { - "category_id": 13, - "poly": [ - 1077, - 1318, - 1098, - 1318, - 1098, - 1345, - 1077, - 1345 - ], - "score": 0.64, - "latex": "S" - }, - { - "category_id": 13, - "poly": [ - 1239, - 1583, - 1262, - 1583, - 1262, - 1611, - 1239, - 1611 - ], - "score": 0.51, - "latex": "S" - }, - { - "category_id": 13, - "poly": [ - 989, - 1488, - 1008, - 1488, - 1008, - 1511, - 989, - 1511 - ], - "score": 0.3, - "latex": "a" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 655.0, - 250.0, - 655.0, - 250.0, - 679.0, - 117.0, - 679.0 - ], - "score": 1.0, - "text": "2. Methods" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 259.0, - 713.0, - 259.0, - 713.0, - 282.0, - 119.0, - 282.0 - ], - "score": 0.97, - "text": "wereto(1)fitamodeltotheobservedannualtime" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 293.0, - 715.0, - 293.0, - 715.0, - 317.0, - 119.0, - 317.0 - ], - "score": 0.97, - "text": "series of FDC percentiles; i.e. 10th percentile for each" - }, - { - "category_id": 15, - "poly": [ - 115.0, - 323.0, - 714.0, - 323.0, - 714.0, - 353.0, - 115.0, - 353.0 - ], - "score": 0.99, - "text": "year of record with annual rainfall and plantation age" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 360.0, - 715.0, - 360.0, - 715.0, - 382.0, - 118.0, - 382.0 - ], - "score": 0.99, - "text": "asparameters,(2)replacetheannualrainfallvariation" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 393.0, - 715.0, - 393.0, - 715.0, - 416.0, - 120.0, - 416.0 - ], - "score": 1.0, - "text": "withthelongtermmeantoobtainclimateadjusted" - }, - { - "category_id": 15, - "poly": [ - 116.0, - 423.0, - 716.0, - 423.0, - 716.0, - 452.0, - 116.0, - 452.0 - ], - "score": 0.99, - "text": "FDCs, and (3) quantify changes in FDC percentiles as" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 460.0, - 714.0, - 460.0, - 714.0, - 485.0, - 118.0, - 485.0 - ], - "score": 0.99, - "text": "plantations age. If the climate signal, represented by" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 490.0, - 714.0, - 490.0, - 714.0, - 517.0, - 117.0, - 517.0 - ], - "score": 0.98, - "text": "rainfall, could be successfully removed, the resulting" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 522.0, - 715.0, - 522.0, - 715.0, - 551.0, - 118.0, - 551.0 - ], - "score": 0.98, - "text": "changes in the FDC would be solely attributable to the" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 558.0, - 238.0, - 558.0, - 238.0, - 583.0, - 119.0, - 583.0 - ], - "score": 0.99, - "text": "vegetation." - }, - { - "category_id": 15, - "poly": [ - 785.0, - 259.0, - 1377.0, - 259.0, - 1377.0, - 283.0, - 785.0, - 283.0 - ], - "score": 0.97, - "text": "closure, a time term is required to represent plantation" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 293.0, - 1380.0, - 293.0, - 1380.0, - 317.0, - 782.0, - 317.0 - ], - "score": 0.96, - "text": "growth.A simple model relating the time series of" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 323.0, - 1379.0, - 323.0, - 1379.0, - 351.0, - 782.0, - 351.0 - ], - "score": 0.98, - "text": "each decile with rainfall and vegetation characteristics" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 355.0, - 1011.0, - 355.0, - 1011.0, - 385.0, - 782.0, - 385.0 - ], - "score": 0.98, - "text": "can be expressed as:" - }, - { - "category_id": 15, - "poly": [ - 150.0, - 789.0, - 713.0, - 789.0, - 713.0, - 816.0, - 150.0, - 816.0 - ], - "score": 0.99, - "text": "Flowdurationcurvesdisplaythe relationship" - }, - { - "category_id": 15, - "poly": [ - 116.0, - 822.0, - 715.0, - 822.0, - 715.0, - 850.0, - 116.0, - 850.0 - ], - "score": 0.97, - "text": "between streamflowand the percentage of time" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 856.0, - 712.0, - 856.0, - 712.0, - 881.0, - 117.0, - 881.0 - ], - "score": 1.0, - "text": "thestreamflowisexceededasacumulativedensity" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 888.0, - 715.0, - 888.0, - 715.0, - 915.0, - 117.0, - 915.0 - ], - "score": 0.99, - "text": "function They can be constructed for any time period" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 922.0, - 715.0, - 922.0, - 715.0, - 948.0, - 118.0, - 948.0 - ], - "score": 0.99, - "text": "(daily, weekly, monthly, etc.) and provide a graphical" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 956.0, - 711.0, - 956.0, - 711.0, - 981.0, - 118.0, - 981.0 - ], - "score": 0.99, - "text": "andstatisticalviewofhistoricstreamflowvariability" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 991.0, - 714.0, - 991.0, - 714.0, - 1014.0, - 117.0, - 1014.0 - ], - "score": 1.0, - "text": "inasinglecatchmentoracomparisonofinter-" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1022.0, - 715.0, - 1022.0, - 715.0, - 1048.0, - 117.0, - 1048.0 - ], - "score": 0.98, - "text": "catchment flow regimes. Vogel and Fennessey (1994)" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1055.0, - 712.0, - 1055.0, - 712.0, - 1080.0, - 118.0, - 1080.0 - ], - "score": 0.96, - "text": "and Smakhtin(1999,2001)demonstrate the utility" - }, - { - "category_id": 15, - "poly": [ - 116.0, - 1088.0, - 714.0, - 1088.0, - 714.0, - 1116.0, - 116.0, - 1116.0 - ], - "score": 0.98, - "text": "(and caveats) of FDCs in characterising, comparing" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1123.0, - 715.0, - 1123.0, - 715.0, - 1150.0, - 119.0, - 1150.0 - ], - "score": 0.96, - "text": "and predicting flow regimes at varying temporal" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1155.0, - 716.0, - 1155.0, - 716.0, - 1180.0, - 117.0, - 1180.0 - ], - "score": 0.98, - "text": "scales.Fig.1isanexampleof annualFDCs" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1190.0, - 712.0, - 1190.0, - 712.0, - 1212.0, - 119.0, - 1212.0 - ], - "score": 1.0, - "text": "constructedfromdailyflows.Fortheconsideration" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1220.0, - 714.0, - 1220.0, - 714.0, - 1248.0, - 117.0, - 1248.0 - ], - "score": 0.99, - "text": "of annual flow regime, daily fows are an appropriate" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1257.0, - 474.0, - 1257.0, - 474.0, - 1280.0, - 119.0, - 1280.0 - ], - "score": 1.0, - "text": "timestepforFDCconstruction." - }, - { - "category_id": 15, - "poly": [ - 787.0, - 524.0, - 855.0, - 524.0, - 855.0, - 548.0, - 787.0, - 548.0 - ], - "score": 1.0, - "text": "where" - }, - { - "category_id": 15, - "poly": [ - 898.0, - 524.0, - 1149.0, - 524.0, - 1149.0, - 548.0, - 898.0, - 548.0 - ], - "score": 0.99, - "text": "is the percentile flow," - }, - { - "category_id": 15, - "poly": [ - 1202.0, - 524.0, - 1380.0, - 524.0, - 1380.0, - 548.0, - 1202.0, - 548.0 - ], - "score": 0.97, - "text": "is a function of" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 558.0, - 929.0, - 558.0, - 929.0, - 581.0, - 783.0, - 581.0 - ], - "score": 1.0, - "text": "rainfalland" - }, - { - "category_id": 15, - "poly": [ - 983.0, - 558.0, - 1378.0, - 558.0, - 1378.0, - 581.0, - 983.0, - 581.0 - ], - "score": 1.0, - "text": "isafunctionoftheageofthe" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 590.0, - 1379.0, - 590.0, - 1379.0, - 613.0, - 783.0, - 613.0 - ], - "score": 1.0, - "text": "plantation.Annualrainfallwaschosenastherainfall" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 624.0, - 1380.0, - 624.0, - 1380.0, - 647.0, - 784.0, - 647.0 - ], - "score": 1.0, - "text": "statisticasitprovedtobethemostrobustpredictorof" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 656.0, - 1379.0, - 656.0, - 1379.0, - 682.0, - 783.0, - 682.0 - ], - "score": 0.95, - "text": "flow over the whole range of flow percentiles,as" - }, - { - "category_id": 15, - "poly": [ - 785.0, - 692.0, - 1379.0, - 692.0, - 1379.0, - 716.0, - 785.0, - 716.0 - ], - "score": 1.0, - "text": "compared with rainfall percentiles; e.g. median rain-" - }, - { - "category_id": 15, - "poly": [ - 781.0, - 720.0, - 1380.0, - 720.0, - 1380.0, - 748.0, - 781.0, - 748.0 - ], - "score": 0.96, - "text": "fall versus 1oth flow percentile. The use of annual" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 757.0, - 1378.0, - 757.0, - 1378.0, - 781.0, - 783.0, - 781.0 - ], - "score": 0.97, - "text": "rainfall also minimises parameter complexity. The" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 788.0, - 1379.0, - 788.0, - 1379.0, - 815.0, - 783.0, - 815.0 - ], - "score": 0.98, - "text": "choice of model form is dependent on selecting a" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 822.0, - 1379.0, - 822.0, - 1379.0, - 846.0, - 782.0, - 846.0 - ], - "score": 0.98, - "text": "function that describes the relationship betweenforest" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 856.0, - 1381.0, - 856.0, - 1381.0, - 880.0, - 782.0, - 880.0 - ], - "score": 0.96, - "text": "age and ET.Scott and Smith (1997) demonstrated" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 890.0, - 1379.0, - 890.0, - 1379.0, - 913.0, - 784.0, - 913.0 - ], - "score": 0.99, - "text": "cumulativereductionsinannualandlowflows" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 922.0, - 1379.0, - 922.0, - 1379.0, - 946.0, - 783.0, - 946.0 - ], - "score": 1.0, - "text": "resultingfromafforestationfittedasigmoidal" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 956.0, - 1378.0, - 956.0, - 1378.0, - 979.0, - 784.0, - 979.0 - ], - "score": 1.0, - "text": "function,similartoforestgrowthfunctions.Conse-" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 990.0, - 1378.0, - 990.0, - 1378.0, - 1013.0, - 784.0, - 1013.0 - ], - "score": 1.0, - "text": "quently,weusedasigmoidalfunctiontocharacterise" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1022.0, - 1376.0, - 1022.0, - 1376.0, - 1046.0, - 784.0, - 1046.0 - ], - "score": 0.95, - "text": "the impact of plantation growth on each flow decile." - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1055.0, - 1378.0, - 1055.0, - 1378.0, - 1080.0, - 783.0, - 1080.0 - ], - "score": 0.96, - "text": "Fig.2a is a schematicof thechangein theFDCover" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1087.0, - 1137.0, - 1087.0, - 1137.0, - 1113.0, - 783.0, - 1113.0 - ], - "score": 0.97, - "text": "time. The model took the form:" - }, - { - "category_id": 15, - "poly": [ - 152.0, - 1288.0, - 712.0, - 1288.0, - 712.0, - 1313.0, - 152.0, - 1313.0 - ], - "score": 1.0, - "text": "FDCswerecomputedfromthedistributionofdaily" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1322.0, - 712.0, - 1322.0, - 712.0, - 1347.0, - 119.0, - 1347.0 - ], - "score": 0.99, - "text": "flowsforeachyearofrecordbasedonthe appropriate" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1356.0, - 714.0, - 1356.0, - 714.0, - 1378.0, - 119.0, - 1378.0 - ], - "score": 0.98, - "text": "wateryears(May-AprilorNovember-October)for" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1389.0, - 714.0, - 1389.0, - 714.0, - 1413.0, - 119.0, - 1413.0 - ], - "score": 0.97, - "text": "10Southern Hemisphere catchments.Each 10th" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1423.0, - 715.0, - 1423.0, - 715.0, - 1444.0, - 118.0, - 1444.0 - ], - "score": 0.98, - "text": "percentile(decile)wasextractedfromtheannual" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1454.0, - 715.0, - 1454.0, - 715.0, - 1479.0, - 117.0, - 1479.0 - ], - "score": 1.0, - "text": "FDCsofeachcatchmenttoformthedatasetsfor" - }, - { - "category_id": 15, - "poly": [ - 121.0, - 1490.0, - 714.0, - 1490.0, - 714.0, - 1513.0, - 121.0, - 1513.0 - ], - "score": 0.98, - "text": "analysis.For thepurposeof characterisingchanges in" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1522.0, - 715.0, - 1522.0, - 715.0, - 1545.0, - 120.0, - 1545.0 - ], - "score": 0.99, - "text": "eachofthedeciles,itisassumedthatthetimeseriesis" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1556.0, - 714.0, - 1556.0, - 714.0, - 1579.0, - 120.0, - 1579.0 - ], - "score": 1.0, - "text": "principallyafunctionofclimateandvegetation" - }, - { - "category_id": 15, - "poly": [ - 121.0, - 1588.0, - 714.0, - 1588.0, - 714.0, - 1611.0, - 121.0, - 1611.0 - ], - "score": 1.0, - "text": "characteristics.Givenrainfallisgenerallythemost" - }, - { - "category_id": 15, - "poly": [ - 121.0, - 1622.0, - 715.0, - 1622.0, - 715.0, - 1645.0, - 121.0, - 1645.0 - ], - "score": 1.0, - "text": "importantfactoraffectingstreamflowandthemost" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1654.0, - 714.0, - 1654.0, - 714.0, - 1677.0, - 119.0, - 1677.0 - ], - "score": 1.0, - "text": "easilyaccesseddata,itischosentorepresentthe" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1687.0, - 716.0, - 1687.0, - 716.0, - 1713.0, - 119.0, - 1713.0 - ], - "score": 0.97, - "text": "climate. Catchment physical properties such as soil" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1722.0, - 714.0, - 1722.0, - 714.0, - 1744.0, - 118.0, - 1744.0 - ], - "score": 1.0, - "text": "propertiesandtopographyareassumedtobetime" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1755.0, - 715.0, - 1755.0, - 715.0, - 1778.0, - 118.0, - 1778.0 - ], - "score": 1.0, - "text": "invariantandthereforetheirimpactonrunoffis" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1786.0, - 714.0, - 1786.0, - 714.0, - 1812.0, - 118.0, - 1812.0 - ], - "score": 0.97, - "text": "considered constant throughout the analysis.As trees" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1821.0, - 712.0, - 1821.0, - 712.0, - 1847.0, - 118.0, - 1847.0 - ], - "score": 0.98, - "text": "intercept and transpire at increasing rates until canopy" - }, - { - "category_id": 15, - "poly": [ - 787.0, - 1289.0, - 856.0, - 1289.0, - 856.0, - 1313.0, - 787.0, - 1313.0 - ], - "score": 1.0, - "text": "where" - }, - { - "category_id": 15, - "poly": [ - 899.0, - 1289.0, - 1205.0, - 1289.0, - 1205.0, - 1313.0, - 899.0, - 1313.0 - ], - "score": 0.96, - "text": "is the percentile flow (i.e." - }, - { - "category_id": 15, - "poly": [ - 1253.0, - 1289.0, - 1377.0, - 1289.0, - 1377.0, - 1313.0, - 1253.0, - 1313.0 - ], - "score": 0.98, - "text": "is the 50th" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 1323.0, - 988.0, - 1323.0, - 988.0, - 1345.0, - 782.0, - 1345.0 - ], - "score": 0.98, - "text": "percentileflow)," - }, - { - "category_id": 15, - "poly": [ - 1013.0, - 1323.0, - 1076.0, - 1323.0, - 1076.0, - 1345.0, - 1013.0, - 1345.0 - ], - "score": 1.0, - "text": "and" - }, - { - "category_id": 15, - "poly": [ - 1099.0, - 1323.0, - 1378.0, - 1323.0, - 1378.0, - 1345.0, - 1099.0, - 1345.0 - ], - "score": 1.0, - "text": "arecoefficientsofthe" - }, - { - "category_id": 15, - "poly": [ - 785.0, - 1356.0, - 962.0, - 1356.0, - 962.0, - 1377.0, - 785.0, - 1377.0 - ], - "score": 0.99, - "text": "sigmoidalterm," - }, - { - "category_id": 15, - "poly": [ - 1003.0, - 1356.0, - 1379.0, - 1356.0, - 1379.0, - 1377.0, - 1003.0, - 1377.0 - ], - "score": 1.0, - "text": "isthedeviationofannualrainfall" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1388.0, - 1209.0, - 1388.0, - 1209.0, - 1413.0, - 783.0, - 1413.0 - ], - "score": 0.96, - "text": "from theperiod ofrecord average, and" - }, - { - "category_id": 15, - "poly": [ - 1263.0, - 1388.0, - 1378.0, - 1388.0, - 1378.0, - 1413.0, - 1263.0, - 1413.0 - ], - "score": 0.95, - "text": "is the time" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1422.0, - 1258.0, - 1422.0, - 1258.0, - 1446.0, - 784.0, - 1446.0 - ], - "score": 0.96, - "text": "in years at which half of the reduction in" - }, - { - "category_id": 15, - "poly": [ - 1302.0, - 1422.0, - 1379.0, - 1422.0, - 1379.0, - 1446.0, - 1302.0, - 1446.0 - ], - "score": 0.98, - "text": "due to" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1455.0, - 1378.0, - 1455.0, - 1378.0, - 1479.0, - 784.0, - 1479.0 - ], - "score": 0.98, - "text": "afforestation has taken place.For the average climate" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1487.0, - 894.0, - 1487.0, - 894.0, - 1512.0, - 783.0, - 1512.0 - ], - "score": 1.0, - "text": "condition" - }, - { - "category_id": 15, - "poly": [ - 1009.0, - 1487.0, - 1269.0, - 1487.0, - 1269.0, - 1512.0, - 1009.0, - 1512.0 - ], - "score": 0.95, - "text": "becomes the value of" - }, - { - "category_id": 15, - "poly": [ - 1312.0, - 1487.0, - 1378.0, - 1487.0, - 1378.0, - 1512.0, - 1312.0, - 1512.0 - ], - "score": 1.0, - "text": "when" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1521.0, - 1380.0, - 1521.0, - 1380.0, - 1545.0, - 783.0, - 1545.0 - ], - "score": 0.97, - "text": "the newequilibriumplantation water use under" - }, - { - "category_id": 15, - "poly": [ - 785.0, - 1555.0, - 1377.0, - 1555.0, - 1377.0, - 1578.0, - 785.0, - 1578.0 - ], - "score": 1.0, - "text": "afforestationisreached.Ythengivesthemagnitude" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1588.0, - 1238.0, - 1588.0, - 1238.0, - 1612.0, - 784.0, - 1612.0 - ], - "score": 0.95, - "text": "of change due to afforestation,and " - }, - { - "category_id": 15, - "poly": [ - 1263.0, - 1588.0, - 1377.0, - 1588.0, - 1377.0, - 1612.0, - 1263.0, - 1612.0 - ], - "score": 0.99, - "text": "describes" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 1619.0, - 1380.0, - 1619.0, - 1380.0, - 1647.0, - 782.0, - 1647.0 - ], - "score": 0.98, - "text": "the shape of the response as shown in Fig. 2b. For" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1654.0, - 1195.0, - 1654.0, - 1195.0, - 1680.0, - 783.0, - 1680.0 - ], - "score": 0.98, - "text": "the average pre-treatment condition" - }, - { - "category_id": 15, - "poly": [ - 1279.0, - 1654.0, - 1312.0, - 1654.0, - 1312.0, - 1680.0, - 1279.0, - 1680.0 - ], - "score": 1.0, - "text": "at" - }, - { - "category_id": 15, - "poly": [ - 822.0, - 1687.0, - 1074.0, - 1687.0, - 1074.0, - 1713.0, - 822.0, - 1713.0 - ], - "score": 0.99, - "text": "approximately equals" - }, - { - "category_id": 15, - "poly": [ - 1141.0, - 1687.0, - 1378.0, - 1687.0, - 1378.0, - 1713.0, - 1141.0, - 1713.0 - ], - "score": 0.98, - "text": "Estimation of a pre-" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1721.0, - 1378.0, - 1721.0, - 1378.0, - 1745.0, - 784.0, - 1745.0 - ], - "score": 0.99, - "text": "afforestationconditionwouldnot requirethetime" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 1754.0, - 1380.0, - 1754.0, - 1380.0, - 1778.0, - 782.0, - 1778.0 - ], - "score": 0.96, - "text": "term.Details of the optimisation scheme and" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1787.0, - 1378.0, - 1787.0, - 1378.0, - 1812.0, - 783.0, - 1812.0 - ], - "score": 0.96, - "text": "sensitivity tests oninitialparametervalues aregiven" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1820.0, - 1018.0, - 1820.0, - 1018.0, - 1844.0, - 783.0, - 1844.0 - ], - "score": 0.96, - "text": "in Lane et al. (2003)." - }, - { - "category_id": 15, - "poly": [ - 117.0, - 721.0, - 523.0, - 721.0, - 523.0, - 750.0, - 117.0, - 750.0 - ], - "score": 0.98, - "text": "2.1. Characterisation of fow regime" - }, - { - "category_id": 15, - "poly": [ - 1345.0, - 196.0, - 1381.0, - 196.0, - 1381.0, - 219.0, - 1345.0, - 219.0 - ], - "score": 1.0, - "text": "255" - }, - { - "category_id": 15, - "poly": [ - 468.0, - 196.0, - 1028.0, - 196.0, - 1028.0, - 220.0, - 468.0, - 220.0 - ], - "score": 0.96, - "text": "P.N.J.Lane et al./ Journal of Hydrology 310(2005) 253-265" - } - ], - "page_info": { - "page_no": 2, - "height": 2064, - "width": 1512 - } - }, - { - "layout_dets": [ - { - "category_id": 9, - "poly": [ - 1360.4927978515625, - 806.4982299804688, - 1393.562255859375, - 806.4982299804688, - 1393.562255859375, - 835.6339721679688, - 1360.4927978515625, - 835.6339721679688 - ], - "score": 0.9999969005584717 - }, - { - "category_id": 0, - "poly": [ - 794.8597412109375, - 500.950927734375, - 1061.779052734375, - 500.950927734375, - 1061.779052734375, - 529.2664794921875, - 794.8597412109375, - 529.2664794921875 - ], - "score": 0.9999960660934448 - }, - { - "category_id": 1, - "poly": [ - 795.16552734375, - 877.1219482421875, - 1396.0081787109375, - 877.1219482421875, - 1396.0081787109375, - 1240.2757568359375, - 795.16552734375, - 1240.2757568359375 - ], - "score": 0.9999922513961792 - }, - { - "category_id": 1, - "poly": [ - 795.3323974609375, - 1244.0330810546875, - 1393.7725830078125, - 1244.0330810546875, - 1393.7725830078125, - 1508.4620361328125, - 795.3323974609375, - 1508.4620361328125 - ], - "score": 0.9999896883964539 - }, - { - "category_id": 9, - "poly": [ - 1360.60400390625, - 1543.2252197265625, - 1393.3878173828125, - 1543.2252197265625, - 1393.3878173828125, - 1573.743896484375, - 1360.60400390625, - 1573.743896484375 - ], - "score": 0.99998939037323 - }, - { - "category_id": 3, - "poly": [ - 143.59278869628906, - 259.15484619140625, - 713.1118774414062, - 259.15484619140625, - 713.1118774414062, - 1178.9329833984375, - 143.59278869628906, - 1178.9329833984375 - ], - "score": 0.9999875426292419 - }, - { - "category_id": 9, - "poly": [ - 695.6785888671875, - 1697.92626953125, - 729.6533813476562, - 1697.92626953125, - 729.6533813476562, - 1727.179443359375, - 695.6785888671875, - 1727.179443359375 - ], - "score": 0.9999865293502808 - }, - { - "category_id": 1, - "poly": [ - 794.4083862304688, - 566.5299072265625, - 1394.3333740234375, - 566.5299072265625, - 1394.3333740234375, - 762.97998046875, - 794.4083862304688, - 762.97998046875 - ], - "score": 0.9999858736991882 - }, - { - "category_id": 2, - "poly": [ - 130.26800537109375, - 194.78128051757812, - 166.77423095703125, - 194.78128051757812, - 166.77423095703125, - 214.85980224609375, - 130.26800537109375, - 214.85980224609375 - ], - "score": 0.999983549118042 - }, - { - "category_id": 4, - "poly": [ - 130.88475036621094, - 1202.541748046875, - 732.7880859375, - 1202.541748046875, - 732.7880859375, - 1255.5113525390625, - 130.88475036621094, - 1255.5113525390625 - ], - "score": 0.9999827146530151 - }, - { - "category_id": 1, - "poly": [ - 131.37588500976562, - 1355.726318359375, - 730.2669067382812, - 1355.726318359375, - 730.2669067382812, - 1652.2847900390625, - 131.37588500976562, - 1652.2847900390625 - ], - "score": 0.9999791979789734 - }, - { - "category_id": 1, - "poly": [ - 131.3990020751953, - 1783.6968994140625, - 730.2479858398438, - 1783.6968994140625, - 730.2479858398438, - 1845.9527587890625, - 131.3990020751953, - 1845.9527587890625 - ], - "score": 0.9999774694442749 - }, - { - "category_id": 8, - "poly": [ - 793.2936401367188, - 779.8841552734375, - 1107.38330078125, - 779.8841552734375, - 1107.38330078125, - 863.30126953125, - 793.2936401367188, - 863.30126953125 - ], - "score": 0.9999751448631287 - }, - { - "category_id": 1, - "poly": [ - 793.5782470703125, - 254.07586669921875, - 1395.4632568359375, - 254.07586669921875, - 1395.4632568359375, - 448.5629577636719, - 793.5782470703125, - 448.5629577636719 - ], - "score": 0.9999668002128601 - }, - { - "category_id": 9, - "poly": [ - 1360.520263671875, - 1667.31787109375, - 1393.381591796875, - 1667.31787109375, - 1393.381591796875, - 1697.6356201171875, - 1360.520263671875, - 1697.6356201171875 - ], - "score": 0.9999586939811707 - }, - { - "category_id": 2, - "poly": [ - 481.1078186035156, - 195.15699768066406, - 1044.8504638671875, - 195.15699768066406, - 1044.8504638671875, - 218.15432739257812, - 481.1078186035156, - 218.15432739257812 - ], - "score": 0.9999558329582214 - }, - { - "category_id": 8, - "poly": [ - 792.6296997070312, - 1522.0426025390625, - 1110.239501953125, - 1522.0426025390625, - 1110.239501953125, - 1603.29150390625, - 792.6296997070312, - 1603.29150390625 - ], - "score": 0.9999276995658875 - }, - { - "category_id": 8, - "poly": [ - 793.1000366210938, - 1664.317138671875, - 976.23876953125, - 1664.317138671875, - 976.23876953125, - 1699.446533203125, - 793.1000366210938, - 1699.446533203125 - ], - "score": 0.9999255537986755 - }, - { - "category_id": 1, - "poly": [ - 795.8680419921875, - 1716.1470947265625, - 1394.599853515625, - 1716.1470947265625, - 1394.599853515625, - 1844.9285888671875, - 795.8680419921875, - 1844.9285888671875 - ], - "score": 0.9999062418937683 - }, - { - "category_id": 1, - "poly": [ - 792.8858642578125, - 1620.9166259765625, - 840.123046875, - 1620.9166259765625, - 840.123046875, - 1649.06201171875, - 792.8858642578125, - 1649.06201171875 - ], - "score": 0.999884307384491 - }, - { - "category_id": 8, - "poly": [ - 128.5625, - 1678.517333984375, - 566.567626953125, - 1678.517333984375, - 566.567626953125, - 1756.288330078125, - 128.5625, - 1756.288330078125 - ], - "score": 0.9992296099662781 - }, - { - "category_id": 0, - "poly": [ - 130.90809631347656, - 1288.0635986328125, - 436.2228088378906, - 1288.0635986328125, - 436.2228088378906, - 1318.1854248046875, - 130.90809631347656, - 1318.1854248046875 - ], - "score": 0.9975306987762451 - }, - { - "category_id": 14, - "poly": [ - 790, - 777, - 1108, - 777, - 1108, - 863, - 790, - 863 - ], - "score": 0.94, - "latex": "E=1.0-\\frac{\\sum_{i=1}^{N}(O_{i}-P_{i})^{2}}{\\sum_{i-1}^{N}(O_{i}-\\bar{O})^{2}}" - }, - { - "category_id": 14, - "poly": [ - 790, - 1521, - 1110, - 1521, - 1110, - 1602, - 790, - 1602 - ], - "score": 0.94, - "latex": "Q_{\\mathcal{q}_{o}}=a+\\frac{Y}{1+\\exp\\left(\\frac{T-T_{\\mathrm{half}}}{S}\\right)}" - }, - { - "category_id": 14, - "poly": [ - 125, - 1674, - 566, - 1674, - 566, - 1756, - 125, - 1756 - ], - "score": 0.93, - "latex": "N_{\\mathrm{zero}}=a+b(\\Delta P)+\\frac{Y}{1+\\exp\\left(\\frac{T-T_{\\mathrm{half}}}{S}\\right)}" - }, - { - "category_id": 13, - "poly": [ - 1306, - 319, - 1388, - 319, - 1388, - 349, - 1306, - 349 - ], - "score": 0.91, - "latex": "\\Delta P\\!=\\!0" - }, - { - "category_id": 13, - "poly": [ - 529, - 1555, - 589, - 1555, - 589, - 1585, - 529, - 1585 - ], - "score": 0.9, - "latex": "N_{\\mathrm{zero}}" - }, - { - "category_id": 13, - "poly": [ - 1281, - 1176, - 1365, - 1176, - 1365, - 1205, - 1281, - 1205 - ], - "score": 0.9, - "latex": "E\\!>\\!0.7" - }, - { - "category_id": 13, - "poly": [ - 880, - 1173, - 931, - 1173, - 931, - 1206, - 880, - 1206 - ], - "score": 0.89, - "latex": "\\!0.7" - }, - { - "category_id": 13, - "poly": [ - 160, - 1682, - 231, - 1682, - 231, - 1713, - 160, - 1713 - ], - "score": 0.88, - "latex": "a+Y)" - }, - { - "category_id": 13, - "poly": [ - 116, - 320, - 188, - 320, - 188, - 351, - 116, - 351 - ], - "score": 0.88, - "latex": "(77\\%)" - }, - { - "category_id": 13, - "poly": [ - 268, - 751, - 324, - 751, - 324, - 781, - 268, - 781 - ], - "score": 0.87, - "latex": "80\\%" - }, - { - "category_id": 13, - "poly": [ - 628, - 585, - 684, - 585, - 684, - 615, - 628, - 615 - ], - "score": 0.87, - "latex": "75\\%" - }, - { - "category_id": 13, - "poly": [ - 602, - 619, - 644, - 619, - 644, - 647, - 602, - 647 - ], - "score": 0.85, - "latex": "9\\%" - }, - { - "category_id": 13, - "poly": [ - 533, - 784, - 577, - 784, - 577, - 814, - 533, - 814 - ], - "score": 0.83, - "latex": "9\\%" - }, - { - "category_id": 13, - "poly": [ - 323, - 1384, - 364, - 1384, - 364, - 1412, - 323, - 1412 - ], - "score": 0.77, - "latex": "\\Delta P" - }, - { - "category_id": 13, - "poly": [ - 286, - 852, - 308, - 852, - 308, - 879, - 286, - 879 - ], - "score": 0.75, - "latex": "E" - }, - { - "category_id": 13, - "poly": [ - 409, - 885, - 432, - 885, - 432, - 912, - 409, - 912 - ], - "score": 0.71, - "latex": "E" - }, - { - "category_id": 13, - "poly": [ - 484, - 254, - 524, - 254, - 524, - 284, - 484, - 284 - ], - "score": 0.7, - "latex": "(E)" - }, - { - "category_id": 13, - "poly": [ - 566, - 1085, - 590, - 1085, - 590, - 1112, - 566, - 1112 - ], - "score": 0.7, - "latex": "E" - }, - { - "category_id": 13, - "poly": [ - 315, - 919, - 334, - 919, - 334, - 946, - 315, - 946 - ], - "score": 0.66, - "latex": "^b" - }, - { - "category_id": 13, - "poly": [ - 376, - 587, - 394, - 587, - 394, - 614, - 376, - 614 - ], - "score": 0.62, - "latex": "^b" - }, - { - "category_id": 13, - "poly": [ - 460, - 1051, - 478, - 1051, - 478, - 1077, - 460, - 1077 - ], - "score": 0.59, - "latex": "^b" - }, - { - "category_id": 13, - "poly": [ - 451, - 319, - 552, - 319, - 552, - 350, - 451, - 350 - ], - "score": 0.46, - "latex": "60\\%\\ 0.8" - }, - { - "category_id": 13, - "poly": [ - 498, - 719, - 522, - 719, - 522, - 746, - 498, - 746 - ], - "score": 0.45, - "latex": "Y" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 762.0, - 1379.0, - 762.0, - 1379.0, - 784.0, - 782.0, - 784.0 - ], - "score": 0.96, - "text": "Fig.3.Examples of observed and flow duration curves adjusted for" - }, - { - "category_id": 15, - "poly": [ - 781.0, - 791.0, - 1379.0, - 791.0, - 1379.0, - 810.0, - 781.0, - 810.0 - ], - "score": 0.99, - "text": "averagerainfallfollowingafforestationforStewartsCreek5," - }, - { - "category_id": 15, - "poly": [ - 782.0, - 818.0, - 868.0, - 818.0, - 868.0, - 838.0, - 782.0, - 838.0 - ], - "score": 1.0, - "text": "Australia." - }, - { - "category_id": 15, - "poly": [ - 119.0, - 258.0, - 483.0, - 258.0, - 483.0, - 282.0, - 119.0, - 282.0 - ], - "score": 0.99, - "text": "thecoefficientofefficiency" - }, - { - "category_id": 15, - "poly": [ - 525.0, - 258.0, - 714.0, - 258.0, - 714.0, - 282.0, - 525.0, - 282.0 - ], - "score": 1.0, - "text": "foreachflow" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 293.0, - 713.0, - 293.0, - 713.0, - 317.0, - 118.0, - 317.0 - ], - "score": 0.97, - "text": "percentile at all the catchments. The majority of fits" - }, - { - "category_id": 15, - "poly": [ - 189.0, - 326.0, - 295.0, - 326.0, - 295.0, - 349.0, - 189.0, - 349.0 - ], - "score": 1.0, - "text": "returned" - }, - { - "category_id": 15, - "poly": [ - 381.0, - 326.0, - 450.0, - 326.0, - 450.0, - 349.0, - 381.0, - 349.0 - ], - "score": 0.9, - "text": ",with" - }, - { - "category_id": 15, - "poly": [ - 553.0, - 326.0, - 714.0, - 326.0, - 714.0, - 349.0, - 553.0, - 349.0 - ], - "score": 0.97, - "text": "or better.The" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 358.0, - 714.0, - 358.0, - 714.0, - 382.0, - 120.0, - 382.0 - ], - "score": 0.97, - "text": "significance of the rainfall and time terms is given in" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 391.0, - 715.0, - 391.0, - 715.0, - 414.0, - 119.0, - 414.0 - ], - "score": 1.0, - "text": "Table3foralldeciles,wheresolutionswerefound." - }, - { - "category_id": 15, - "poly": [ - 119.0, - 425.0, - 714.0, - 425.0, - 714.0, - 449.0, - 119.0, - 449.0 - ], - "score": 0.96, - "text": "There were not enough data to fit the model in five" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 457.0, - 714.0, - 457.0, - 714.0, - 482.0, - 117.0, - 482.0 - ], - "score": 0.96, - "text": "instancesbecause ofextended periods of zeroflows." - }, - { - "category_id": 15, - "poly": [ - 118.0, - 490.0, - 714.0, - 490.0, - 714.0, - 516.0, - 118.0, - 516.0 - ], - "score": 0.99, - "text": "This problem is addressed to some extent in the zero" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 525.0, - 715.0, - 525.0, - 715.0, - 549.0, - 119.0, - 549.0 - ], - "score": 0.97, - "text": "flow analysis. If the rainfall signal is tobe separated" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 557.0, - 714.0, - 557.0, - 714.0, - 581.0, - 119.0, - 581.0 - ], - "score": 0.97, - "text": "from the vegetation signal the rainfall terms must be" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 592.0, - 375.0, - 592.0, - 375.0, - 616.0, - 120.0, - 616.0 - ], - "score": 0.99, - "text": "significant. This term," - }, - { - "category_id": 15, - "poly": [ - 395.0, - 592.0, - 627.0, - 592.0, - 627.0, - 616.0, - 395.0, - 616.0 - ], - "score": 0.96, - "text": ",was significant for" - }, - { - "category_id": 15, - "poly": [ - 685.0, - 592.0, - 717.0, - 592.0, - 717.0, - 616.0, - 685.0, - 616.0 - ], - "score": 1.0, - "text": "of" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 623.0, - 601.0, - 623.0, - 601.0, - 648.0, - 118.0, - 648.0 - ], - "score": 0.96, - "text": "the deciles at the 0.05 level, and a further" - }, - { - "category_id": 15, - "poly": [ - 645.0, - 623.0, - 714.0, - 623.0, - 714.0, - 648.0, - 645.0, - 648.0 - ], - "score": 1.0, - "text": "atthe" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 656.0, - 715.0, - 656.0, - 715.0, - 682.0, - 117.0, - 682.0 - ], - "score": 0.99, - "text": "0.10 level. The incidence of significance was greatest" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 691.0, - 716.0, - 691.0, - 716.0, - 714.0, - 118.0, - 714.0 - ], - "score": 1.0, - "text": "forthe10-50thpercentilesat45ofthe50datasetsat" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 724.0, - 497.0, - 724.0, - 497.0, - 747.0, - 119.0, - 747.0 - ], - "score": 0.97, - "text": "the0.051evel.Thetimeterm," - }, - { - "category_id": 15, - "poly": [ - 523.0, - 724.0, - 714.0, - 724.0, - 714.0, - 747.0, - 523.0, - 747.0 - ], - "score": 1.0, - "text": "returnedsimilar" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 757.0, - 267.0, - 757.0, - 267.0, - 781.0, - 119.0, - 781.0 - ], - "score": 0.99, - "text": "results, with" - }, - { - "category_id": 15, - "poly": [ - 325.0, - 757.0, - 714.0, - 757.0, - 714.0, - 781.0, - 325.0, - 781.0 - ], - "score": 0.94, - "text": " of the deciles significant at O.05" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 790.0, - 532.0, - 790.0, - 532.0, - 814.0, - 119.0, - 814.0 - ], - "score": 1.0, - "text": "level.Therewereanadditional" - }, - { - "category_id": 15, - "poly": [ - 578.0, - 790.0, - 714.0, - 790.0, - 714.0, - 814.0, - 578.0, - 814.0 - ], - "score": 0.97, - "text": "of deciles" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 823.0, - 431.0, - 823.0, - 431.0, - 849.0, - 120.0, - 849.0 - ], - "score": 0.99, - "text": "significant at the 0.10 level." - }, - { - "category_id": 15, - "poly": [ - 834.0, - 884.0, - 1379.0, - 884.0, - 1379.0, - 909.0, - 834.0, - 909.0 - ], - "score": 0.97, - "text": "values aregiveninTable 4.Fig.3 shows that for" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 917.0, - 1379.0, - 917.0, - 1379.0, - 941.0, - 783.0, - 941.0 - ], - "score": 0.99, - "text": "most deciles the adjusted FDCs are identical for 12" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 952.0, - 1377.0, - 952.0, - 1377.0, - 977.0, - 784.0, - 977.0 - ], - "score": 0.99, - "text": "and20yearsaftertreatment.Thisfigureclearly" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 984.0, - 1377.0, - 984.0, - 1377.0, - 1010.0, - 783.0, - 1010.0 - ], - "score": 0.96, - "text": "demonstrates the necessityfor FDC adjustment," - }, - { - "category_id": 15, - "poly": [ - 781.0, - 1017.0, - 1162.0, - 1017.0, - 1162.0, - 1043.0, - 781.0, - 1043.0 - ], - "score": 0.97, - "text": "particularly for the 20years FDC" - }, - { - "category_id": 15, - "poly": [ - 154.0, - 855.0, - 285.0, - 855.0, - 285.0, - 879.0, - 154.0, - 879.0 - ], - "score": 1.0, - "text": "Thepoorest" - }, - { - "category_id": 15, - "poly": [ - 309.0, - 855.0, - 713.0, - 855.0, - 713.0, - 879.0, - 309.0, - 879.0 - ], - "score": 0.99, - "text": "valueswere thosefromLambrechts-" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 888.0, - 408.0, - 888.0, - 408.0, - 912.0, - 117.0, - 912.0 - ], - "score": 0.98, - "text": "bos A and B. The high" - }, - { - "category_id": 15, - "poly": [ - 433.0, - 888.0, - 716.0, - 888.0, - 716.0, - 912.0, - 433.0, - 912.0 - ], - "score": 0.98, - "text": "for 50-100th deciles at" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 924.0, - 314.0, - 924.0, - 314.0, - 947.0, - 119.0, - 947.0 - ], - "score": 0.99, - "text": "Biesievlei,where" - }, - { - "category_id": 15, - "poly": [ - 335.0, - 924.0, - 714.0, - 924.0, - 714.0, - 947.0, - 335.0, - 947.0 - ], - "score": 0.96, - "text": "was notsignificant are notable.In" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 957.0, - 714.0, - 957.0, - 714.0, - 980.0, - 120.0, - 980.0 - ], - "score": 0.99, - "text": "generalthemodelfitsthehigherflows(lowerdeciles)" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 990.0, - 715.0, - 990.0, - 715.0, - 1012.0, - 119.0, - 1012.0 - ], - "score": 0.98, - "text": "better,mostofthepoorerfitsareinthe80-100" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1024.0, - 714.0, - 1024.0, - 714.0, - 1045.0, - 118.0, - 1045.0 - ], - "score": 1.0, - "text": "percentilerange.Thiscanbeexpectedgiventheresults" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1056.0, - 459.0, - 1056.0, - 459.0, - 1078.0, - 119.0, - 1078.0 - ], - "score": 0.98, - "text": "ofthesignificancetestsfor" - }, - { - "category_id": 15, - "poly": [ - 479.0, - 1056.0, - 714.0, - 1056.0, - 714.0, - 1078.0, - 479.0, - 1078.0 - ], - "score": 0.98, - "text": ".Theresultsofthe" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1089.0, - 565.0, - 1089.0, - 565.0, - 1114.0, - 117.0, - 1114.0 - ], - "score": 0.99, - "text": "sensitivityanalysissuggestedthat the" - }, - { - "category_id": 15, - "poly": [ - 591.0, - 1089.0, - 716.0, - 1089.0, - 716.0, - 1114.0, - 591.0, - 1114.0 - ], - "score": 1.0, - "text": "valuesfor" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1122.0, - 714.0, - 1122.0, - 714.0, - 1146.0, - 119.0, - 1146.0 - ], - "score": 0.96, - "text": "Glendhu 2 and for 10th and 20th percentiles from" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1155.0, - 714.0, - 1155.0, - 714.0, - 1179.0, - 118.0, - 1179.0 - ], - "score": 0.95, - "text": "Cathedral Peak3 may exaggerate the goodness offit to" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1189.0, - 642.0, - 1189.0, - 642.0, - 1212.0, - 119.0, - 1212.0 - ], - "score": 0.97, - "text": "theexactformof themodel (Laneet al.,2003)" - }, - { - "category_id": 15, - "poly": [ - 817.0, - 1051.0, - 1379.0, - 1051.0, - 1379.0, - 1076.0, - 817.0, - 1076.0 - ], - "score": 0.97, - "text": "Therelative net flowchangedue toafforestation is" - }, - { - "category_id": 15, - "poly": [ - 785.0, - 1086.0, - 877.0, - 1086.0, - 877.0, - 1109.0, - 785.0, - 1109.0 - ], - "score": 1.0, - "text": "givenby" - }, - { - "category_id": 15, - "poly": [ - 976.0, - 1086.0, - 1377.0, - 1086.0, - 1377.0, - 1109.0, - 976.0, - 1109.0 - ], - "score": 0.99, - "text": ",whichrepresentsthechangefromthe" - }, - { - "category_id": 15, - "poly": [ - 785.0, - 1118.0, - 1379.0, - 1118.0, - 1379.0, - 1142.0, - 785.0, - 1142.0 - ], - "score": 0.96, - "text": "old equilibrium water use condition of pre-treatment" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1152.0, - 1381.0, - 1152.0, - 1381.0, - 1175.0, - 784.0, - 1175.0 - ], - "score": 1.0, - "text": "vegetationtothenewequilibriumconditionatforest" - }, - { - "category_id": 15, - "poly": [ - 785.0, - 1186.0, - 1379.0, - 1186.0, - 1379.0, - 1210.0, - 785.0, - 1210.0 - ], - "score": 0.98, - "text": "canopy closure. This quantity is plotted for all catchments" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1218.0, - 1378.0, - 1218.0, - 1378.0, - 1241.0, - 783.0, - 1241.0 - ], - "score": 0.97, - "text": "in Fig.4.Somedecileshavebeen removedfrom thedata" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1252.0, - 1378.0, - 1252.0, - 1378.0, - 1274.0, - 784.0, - 1274.0 - ], - "score": 0.97, - "text": "set,the10thand50thpercentileforGlendhu2andthe" - }, - { - "category_id": 15, - "poly": [ - 787.0, - 1284.0, - 1378.0, - 1284.0, - 1378.0, - 1308.0, - 787.0, - 1308.0 - ], - "score": 0.97, - "text": "10th and 20th percentiles from Cathedral Peak 3. The" - }, - { - "category_id": 15, - "poly": [ - 785.0, - 1317.0, - 1378.0, - 1317.0, - 1378.0, - 1342.0, - 785.0, - 1342.0 - ], - "score": 1.0, - "text": "optimisedvalueofawaszeroornearzeroforthesecases," - }, - { - "category_id": 15, - "poly": [ - 786.0, - 1352.0, - 1378.0, - 1352.0, - 1378.0, - 1375.0, - 786.0, - 1375.0 - ], - "score": 0.99, - "text": "whichisnotconsistentwith theconceptualmodel.The" - }, - { - "category_id": 15, - "poly": [ - 786.0, - 1385.0, - 1378.0, - 1385.0, - 1378.0, - 1409.0, - 786.0, - 1409.0 - ], - "score": 0.97, - "text": "changes shown in Fig. 4 are variable. However, there are" - }, - { - "category_id": 15, - "poly": [ - 785.0, - 1419.0, - 1377.0, - 1419.0, - 1377.0, - 1443.0, - 785.0, - 1443.0 - ], - "score": 0.98, - "text": "some commonalities between catchment responses. Two" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1452.0, - 1379.0, - 1452.0, - 1379.0, - 1476.0, - 783.0, - 1476.0 - ], - "score": 0.97, - "text": "types of responses (groups) were identified. Group 1" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1485.0, - 1381.0, - 1485.0, - 1381.0, - 1508.0, - 783.0, - 1508.0 - ], - "score": 0.99, - "text": "catchments showasubstantialincreaseinthenumber of" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1519.0, - 1379.0, - 1519.0, - 1379.0, - 1543.0, - 784.0, - 1543.0 - ], - "score": 0.99, - "text": "zero flow days, with a greater proportional reduction in" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1552.0, - 1380.0, - 1552.0, - 1380.0, - 1575.0, - 783.0, - 1575.0 - ], - "score": 0.99, - "text": "lowflowsthanhighflows.Group2catchmentsshowa" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 1586.0, - 1379.0, - 1586.0, - 1379.0, - 1608.0, - 782.0, - 1608.0 - ], - "score": 0.99, - "text": "moreuniformproportionalreductioninflowsacrossall" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 1618.0, - 1378.0, - 1618.0, - 1378.0, - 1643.0, - 782.0, - 1643.0 - ], - "score": 0.98, - "text": "percentiles, albeit with some variability. The catchments" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1652.0, - 974.0, - 1652.0, - 974.0, - 1676.0, - 784.0, - 1676.0 - ], - "score": 0.95, - "text": "in eachgroup are:" - }, - { - "category_id": 15, - "poly": [ - 152.0, - 1321.0, - 713.0, - 1321.0, - 713.0, - 1346.0, - 152.0, - 1346.0 - ], - "score": 0.98, - "text": "Followingthesuccessfulfittingof(2)tothe" - }, - { - "category_id": 15, - "poly": [ - 121.0, - 1356.0, - 714.0, - 1356.0, - 714.0, - 1379.0, - 121.0, - 1379.0 - ], - "score": 0.99, - "text": "observedpercentiles,theFDCswereadjustedfor" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1391.0, - 322.0, - 1391.0, - 322.0, - 1414.0, - 120.0, - 1414.0 - ], - "score": 1.0, - "text": "climatebysetting" - }, - { - "category_id": 15, - "poly": [ - 365.0, - 1391.0, - 714.0, - 1391.0, - 714.0, - 1414.0, - 365.0, - 1414.0 - ], - "score": 0.96, - "text": "to zero, representing long term" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1423.0, - 714.0, - 1423.0, - 714.0, - 1445.0, - 119.0, - 1445.0 - ], - "score": 1.0, - "text": "averageannualrainfall.TheclimateadjustedFDCs" - }, - { - "category_id": 15, - "poly": [ - 116.0, - 1454.0, - 715.0, - 1454.0, - 715.0, - 1480.0, - 116.0, - 1480.0 - ], - "score": 0.99, - "text": "produce anestimationofthechangeinflow" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1486.0, - 716.0, - 1486.0, - 716.0, - 1513.0, - 117.0, - 1513.0 - ], - "score": 0.95, - "text": "percentiles over time for eachcatchment due to" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1520.0, - 715.0, - 1520.0, - 715.0, - 1545.0, - 119.0, - 1545.0 - ], - "score": 0.98, - "text": "afforestation thatmaybeviewed intwoforms:new" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1554.0, - 715.0, - 1554.0, - 715.0, - 1579.0, - 118.0, - 1579.0 - ], - "score": 0.97, - "text": "FDCs, adjusted for climate, as exemplified in Fig. 3" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1588.0, - 715.0, - 1588.0, - 715.0, - 1612.0, - 118.0, - 1612.0 - ], - "score": 0.97, - "text": "for Stewarts Creek 5, and a comparison between all" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1621.0, - 712.0, - 1621.0, - 712.0, - 1645.0, - 119.0, - 1645.0 - ], - "score": 0.98, - "text": "catchments of the maximum change in yield (given by" - }, - { - "category_id": 15, - "poly": [ - 121.0, - 1655.0, - 714.0, - 1655.0, - 714.0, - 1678.0, - 121.0, - 1678.0 - ], - "score": 0.98, - "text": "Y)foreachflowpercentilefrombaselineflows(given" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1688.0, - 159.0, - 1688.0, - 159.0, - 1710.0, - 119.0, - 1710.0 - ], - "score": 1.0, - "text": "by" - }, - { - "category_id": 15, - "poly": [ - 232.0, - 1688.0, - 715.0, - 1688.0, - 715.0, - 1710.0, - 232.0, - 1710.0 - ], - "score": 1.0, - "text": "asshowninFig.4.Wherethenew" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1721.0, - 714.0, - 1721.0, - 714.0, - 1744.0, - 120.0, - 1744.0 - ], - "score": 1.0, - "text": "equilibriumofmaximumwateruseisreached,the" - }, - { - "category_id": 15, - "poly": [ - 122.0, - 1755.0, - 714.0, - 1755.0, - 714.0, - 1778.0, - 122.0, - 1778.0 - ], - "score": 1.0, - "text": "adjustedFDCsforindividualyearsshouldbeidentical" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1786.0, - 713.0, - 1786.0, - 713.0, - 1811.0, - 118.0, - 1811.0 - ], - "score": 0.96, - "text": "if rainfallvariabilityhas been accounted for.The new" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1818.0, - 600.0, - 1818.0, - 600.0, - 1850.0, - 118.0, - 1850.0 - ], - "score": 0.99, - "text": "equilibrium is approximately reached for" - }, - { - "category_id": 15, - "poly": [ - 1344.0, - 196.0, - 1382.0, - 196.0, - 1382.0, - 219.0, - 1344.0, - 219.0 - ], - "score": 1.0, - "text": "259" - }, - { - "category_id": 15, - "poly": [ - 785.0, - 1712.0, - 1320.0, - 1712.0, - 1320.0, - 1736.0, - 785.0, - 1736.0 - ], - "score": 1.0, - "text": "Group 1: Stewarts Creek, Pine Creek, and Redhill" - }, - { - "category_id": 15, - "poly": [ - 785.0, - 1744.0, - 1377.0, - 1744.0, - 1377.0, - 1769.0, - 785.0, - 1769.0 - ], - "score": 0.96, - "text": "Group 2:Cathedral Peak 2 and 3,Lambrechtsbos A." - }, - { - "category_id": 15, - "poly": [ - 891.0, - 1777.0, - 1379.0, - 1777.0, - 1379.0, - 1803.0, - 891.0, - 1803.0 - ], - "score": 1.0, - "text": "Lambrechtsbos B, Glendhu 2, Biesievlei and" - }, - { - "category_id": 15, - "poly": [ - 893.0, - 1810.0, - 1067.0, - 1810.0, - 1067.0, - 1837.0, - 893.0, - 1837.0 - ], - "score": 1.0, - "text": "TraralgonCreek" - }, - { - "category_id": 15, - "poly": [ - 469.0, - 197.0, - 1029.0, - 197.0, - 1029.0, - 220.0, - 469.0, - 220.0 - ], - "score": 0.99, - "text": "P.N.J.Laneet al./JournalofHydrology310(2005)253-265" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1254.0, - 688.0, - 1254.0, - 688.0, - 1284.0, - 118.0, - 1284.0 - ], - "score": 0.97, - "text": "4.2. Adjusted FDCs—magnitude of flow reductions" - } - ], - "page_info": { - "page_no": 6, - "height": 2064, - "width": 1512 - } - }, - { - "layout_dets": [ - { - "category_id": 6, - "poly": [ - 130.8647003173828, - 1373.554931640625, - 409.2564392089844, - 1373.554931640625, - 409.2564392089844, - 1428.904541015625, - 130.8647003173828, - 1428.904541015625 - ], - "score": 0.9999980926513672 - }, - { - "category_id": 5, - "poly": [ - 125.87389373779297, - 1427.83544921875, - 1397.271484375, - 1427.83544921875, - 1397.271484375, - 1811.2467041015625, - 125.87389373779297, - 1811.2467041015625 - ], - "score": 0.999991774559021 - }, - { - "category_id": 1, - "poly": [ - 796.4015502929688, - 907.420166015625, - 1393.103759765625, - 907.420166015625, - 1393.103759765625, - 1312.5423583984375, - 796.4015502929688, - 1312.5423583984375 - ], - "score": 0.9999879598617554 - }, - { - "category_id": 1, - "poly": [ - 131.5682373046875, - 838.7388305664062, - 728.2155151367188, - 838.7388305664062, - 728.2155151367188, - 1313.8204345703125, - 131.5682373046875, - 1313.8204345703125 - ], - "score": 0.999987781047821 - }, - { - "category_id": 3, - "poly": [ - 304.8876953125, - 255.1979522705078, - 1220.4678955078125, - 255.1979522705078, - 1220.4678955078125, - 708.6326293945312, - 304.8876953125, - 708.6326293945312 - ], - "score": 0.9999865889549255 - }, - { - "category_id": 2, - "poly": [ - 131.3226318359375, - 196.32550048828125, - 166.26792907714844, - 196.32550048828125, - 166.26792907714844, - 214.9618377685547, - 131.3226318359375, - 214.9618377685547 - ], - "score": 0.9999861717224121 - }, - { - "category_id": 0, - "poly": [ - 794.9564819335938, - 839.493408203125, - 1117.9090576171875, - 839.493408203125, - 1117.9090576171875, - 868.1661987304688, - 794.9564819335938, - 868.1661987304688 - ], - "score": 0.9999852180480957 - }, - { - "category_id": 2, - "poly": [ - 481.3118591308594, - 195.47975158691406, - 1044.29833984375, - 195.47975158691406, - 1044.29833984375, - 218.9685516357422, - 481.3118591308594, - 218.9685516357422 - ], - "score": 0.9999847412109375 - }, - { - "category_id": 4, - "poly": [ - 510.6107177734375, - 733.9615478515625, - 1013.2381591796875, - 733.9615478515625, - 1013.2381591796875, - 759.1690673828125, - 510.6107177734375, - 759.1690673828125 - ], - "score": 0.9998294711112976 - }, - { - "category_id": 7, - "poly": [ - 129.30935668945312, - 1816.606689453125, - 940.408447265625, - 1816.606689453125, - 940.408447265625, - 1842.029541015625, - 129.30935668945312, - 1842.029541015625 - ], - "score": 0.9996983408927917 - }, - { - "category_id": 13, - "poly": [ - 759, - 733, - 840, - 733, - 840, - 759, - 759, - 759 - ], - "score": 0.9, - "latex": "Y/(Y\\!+\\!a)" - }, - { - "category_id": 13, - "poly": [ - 815, - 1077, - 867, - 1077, - 867, - 1108, - 815, - 1108 - ], - "score": 0.89, - "latex": "T_{\\mathrm{half}}" - }, - { - "category_id": 13, - "poly": [ - 1088, - 1179, - 1140, - 1179, - 1140, - 1211, - 1088, - 1211 - ], - "score": 0.89, - "latex": "T_{\\mathrm{half}}" - }, - { - "category_id": 13, - "poly": [ - 130, - 1247, - 196, - 1247, - 196, - 1277, - 130, - 1277 - ], - "score": 0.84, - "latex": "100\\%" - }, - { - "category_id": 13, - "poly": [ - 209, - 1042, - 276, - 1042, - 276, - 1072, - 209, - 1072 - ], - "score": 0.84, - "latex": "100\\%" - }, - { - "category_id": 13, - "poly": [ - 1174, - 940, - 1224, - 940, - 1224, - 971, - 1174, - 971 - ], - "score": 0.83, - "latex": "T_{\\mathrm{half}}" - }, - { - "category_id": 13, - "poly": [ - 129, - 1401, - 172, - 1401, - 172, - 1428, - 129, - 1428 - ], - "score": 0.7, - "latex": "T_{\\mathrm{half}}" - }, - { - "category_id": 15, - "poly": [ - 130.0, - 1375.0, - 202.0, - 1375.0, - 202.0, - 1396.0, - 130.0, - 1396.0 - ], - "score": 0.95, - "text": "Table 4" - }, - { - "category_id": 15, - "poly": [ - 173.0, - 1404.0, - 406.0, - 1404.0, - 406.0, - 1426.0, - 173.0, - 1426.0 - ], - "score": 0.98, - "text": "(years) for all catchments" - }, - { - "category_id": 15, - "poly": [ - 831.0, - 911.0, - 1391.0, - 911.0, - 1391.0, - 935.0, - 831.0, - 935.0 - ], - "score": 0.97, - "text": "The speed of flow responses to afforestation can be" - }, - { - "category_id": 15, - "poly": [ - 795.0, - 944.0, - 1173.0, - 944.0, - 1173.0, - 971.0, - 795.0, - 971.0 - ], - "score": 0.96, - "text": "evaluated by examining the value of" - }, - { - "category_id": 15, - "poly": [ - 1225.0, - 944.0, - 1393.0, - 944.0, - 1393.0, - 971.0, - 1225.0, - 971.0 - ], - "score": 0.98, - "text": "(Table 4).There" - }, - { - "category_id": 15, - "poly": [ - 794.0, - 977.0, - 1393.0, - 977.0, - 1393.0, - 1005.0, - 794.0, - 1005.0 - ], - "score": 1.0, - "text": "is substantial variation in response times both over the" - }, - { - "category_id": 15, - "poly": [ - 795.0, - 1015.0, - 1392.0, - 1015.0, - 1392.0, - 1036.0, - 795.0, - 1036.0 - ], - "score": 1.0, - "text": "percentilespreadinsomeindividualcatchments,and" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1047.0, - 1392.0, - 1047.0, - 1392.0, - 1071.0, - 796.0, - 1071.0 - ], - "score": 0.96, - "text": "between the catchments. The majority of responses have" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1083.0, - 814.0, - 1083.0, - 814.0, - 1105.0, - 796.0, - 1105.0 - ], - "score": 0.96, - "text": "a" - }, - { - "category_id": 15, - "poly": [ - 868.0, - 1083.0, - 1392.0, - 1083.0, - 1392.0, - 1105.0, - 868.0, - 1105.0 - ], - "score": 0.99, - "text": "valuebetween5and10years.PineCreekand" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1116.0, - 1392.0, - 1116.0, - 1392.0, - 1139.0, - 796.0, - 1139.0 - ], - "score": 0.99, - "text": "StewartsCreek,Redhill andLambrechtsbosAexhibitthe" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1150.0, - 1393.0, - 1150.0, - 1393.0, - 1175.0, - 796.0, - 1175.0 - ], - "score": 1.0, - "text": "fastestresponses,withBiesievleishowingthemost" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1183.0, - 1087.0, - 1183.0, - 1087.0, - 1209.0, - 796.0, - 1209.0 - ], - "score": 0.98, - "text": "uniformly slowresponse." - }, - { - "category_id": 15, - "poly": [ - 1141.0, - 1183.0, - 1393.0, - 1183.0, - 1393.0, - 1209.0, - 1141.0, - 1209.0 - ], - "score": 0.99, - "text": "for theSouthAfrican" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1219.0, - 1392.0, - 1219.0, - 1392.0, - 1243.0, - 797.0, - 1243.0 - ], - "score": 0.98, - "text": "catchments display a good correspondence to published" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1253.0, - 1392.0, - 1253.0, - 1392.0, - 1276.0, - 797.0, - 1276.0 - ], - "score": 0.98, - "text": "annualchanges(Scottetal.,2000;VanWyk,1987)," - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1288.0, - 1392.0, - 1288.0, - 1392.0, - 1310.0, - 796.0, - 1310.0 - ], - "score": 0.99, - "text": "exceptingthe10-20thdecilesforbothCathedralPeak" - }, - { - "category_id": 15, - "poly": [ - 166.0, - 843.0, - 729.0, - 843.0, - 729.0, - 867.0, - 166.0, - 867.0 - ], - "score": 0.94, - "text": "Group1 exhibit both the highest reduction of" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 875.0, - 728.0, - 875.0, - 728.0, - 902.0, - 131.0, - 902.0 - ], - "score": 0.97, - "text": "flows overall, and show the largest proportional" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 910.0, - 728.0, - 910.0, - 728.0, - 939.0, - 131.0, - 939.0 - ], - "score": 0.97, - "text": "reduction at lower flows, leading to a complete" - }, - { - "category_id": 15, - "poly": [ - 130.0, - 946.0, - 729.0, - 946.0, - 729.0, - 969.0, - 130.0, - 969.0 - ], - "score": 0.99, - "text": "cessationofflow.Comparisonof flowreductionsis" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 980.0, - 729.0, - 980.0, - 729.0, - 1003.0, - 131.0, - 1003.0 - ], - "score": 1.0, - "text": "hinderedslightlybytherangeofafforestationatthe" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1014.0, - 729.0, - 1014.0, - 729.0, - 1037.0, - 131.0, - 1037.0 - ], - "score": 0.97, - "text": "catchments(Table 1).These results couldbe scaled" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1048.0, - 208.0, - 1048.0, - 208.0, - 1072.0, - 131.0, - 1072.0 - ], - "score": 0.99, - "text": "upto" - }, - { - "category_id": 15, - "poly": [ - 277.0, - 1048.0, - 731.0, - 1048.0, - 731.0, - 1072.0, - 277.0, - 1072.0 - ], - "score": 0.93, - "text": " afforested if it is assumed there is a" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1082.0, - 726.0, - 1082.0, - 726.0, - 1105.0, - 131.0, - 1105.0 - ], - "score": 0.97, - "text": "linear relationshipbetweentheareaplantedandflow" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1116.0, - 728.0, - 1116.0, - 728.0, - 1139.0, - 132.0, - 1139.0 - ], - "score": 0.99, - "text": "reductions.Asthereisnoevidencethatthisisthe" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1151.0, - 728.0, - 1151.0, - 728.0, - 1175.0, - 132.0, - 1175.0 - ], - "score": 0.96, - "text": "case we have not presented scaled reductions here." - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1184.0, - 730.0, - 1184.0, - 730.0, - 1209.0, - 131.0, - 1209.0 - ], - "score": 0.98, - "text": "Linear scaling wouldshiftthereductioncurves" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1218.0, - 728.0, - 1218.0, - 728.0, - 1242.0, - 132.0, - 1242.0 - ], - "score": 0.94, - "text": "upward for those catchments that are less than" - }, - { - "category_id": 15, - "poly": [ - 197.0, - 1250.0, - 728.0, - 1250.0, - 728.0, - 1279.0, - 197.0, - 1279.0 - ], - "score": 0.95, - "text": " afforested, but would not change the shape" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1287.0, - 485.0, - 1287.0, - 485.0, - 1314.0, - 132.0, - 1314.0 - ], - "score": 0.98, - "text": "of the curves or our groupings." - }, - { - "category_id": 15, - "poly": [ - 130.0, - 196.0, - 167.0, - 196.0, - 167.0, - 218.0, - 130.0, - 218.0 - ], - "score": 1.0, - "text": "260" - }, - { - "category_id": 15, - "poly": [ - 794.0, - 840.0, - 1118.0, - 840.0, - 1118.0, - 869.0, - 794.0, - 869.0 - ], - "score": 0.99, - "text": "4.3. Timing of fow reductions" - }, - { - "category_id": 15, - "poly": [ - 481.0, - 196.0, - 1042.0, - 196.0, - 1042.0, - 220.0, - 481.0, - 220.0 - ], - "score": 0.96, - "text": "P.N.J.Lane et al./ Journal of Hydrology 310(2005) 253-265" - }, - { - "category_id": 15, - "poly": [ - 513.0, - 737.0, - 758.0, - 737.0, - 758.0, - 760.0, - 513.0, - 760.0 - ], - "score": 0.95, - "text": "Fig. 4. Net flow reductions" - }, - { - "category_id": 15, - "poly": [ - 841.0, - 737.0, - 1009.0, - 737.0, - 1009.0, - 760.0, - 841.0, - 760.0 - ], - "score": 0.99, - "text": "for all catchments" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1820.0, - 936.0, - 1820.0, - 936.0, - 1843.0, - 131.0, - 1843.0 - ], - "score": 0.97, - "text": "Note that no solution could be found for the 5O percentile for Glendhu indicted by the ns" - } - ], - "page_info": { - "page_no": 7, - "height": 2064, - "width": 1512 - } - }, - { - "layout_dets": [ - { - "category_id": 6, - "poly": [ - 114.02448272705078, - 252.96278381347656, - 1384.26953125, - 252.96278381347656, - 1384.26953125, - 336.2478332519531, - 114.02448272705078, - 336.2478332519531 - ], - "score": 0.9999914169311523 - }, - { - "category_id": 1, - "poly": [ - 782.927978515625, - 1059.080810546875, - 1379.0045166015625, - 1059.080810546875, - 1379.0045166015625, - 1518.4134521484375, - 782.927978515625, - 1518.4134521484375 - ], - "score": 0.9999841451644897 - }, - { - "category_id": 1, - "poly": [ - 117.70939636230469, - 1242.48876953125, - 715.529052734375, - 1242.48876953125, - 715.529052734375, - 1847.1575927734375, - 117.70939636230469, - 1847.1575927734375 - ], - "score": 0.9999837279319763 - }, - { - "category_id": 5, - "poly": [ - 112.87651062011719, - 340.12884521484375, - 1386.6334228515625, - 340.12884521484375, - 1386.6334228515625, - 690.6670532226562, - 112.87651062011719, - 690.6670532226562 - ], - "score": 0.9999768733978271 - }, - { - "category_id": 0, - "poly": [ - 782.4056396484375, - 1617.4853515625, - 928.7228393554688, - 1617.4853515625, - 928.7228393554688, - 1646.1173095703125, - 782.4056396484375, - 1646.1173095703125 - ], - "score": 0.9999604225158691 - }, - { - "category_id": 1, - "poly": [ - 782.9052734375, - 1683.71533203125, - 1379.5103759765625, - 1683.71533203125, - 1379.5103759765625, - 1845.6593017578125, - 782.9052734375, - 1845.6593017578125 - ], - "score": 0.9999464750289917 - }, - { - "category_id": 1, - "poly": [ - 119.27631378173828, - 994.8147583007812, - 712.2225341796875, - 994.8147583007812, - 712.2225341796875, - 1120.854736328125, - 119.27631378173828, - 1120.854736328125 - ], - "score": 0.9999319911003113 - }, - { - "category_id": 0, - "poly": [ - 783.0419921875, - 993.3599243164062, - 987.883056640625, - 993.3599243164062, - 987.883056640625, - 1020.2771606445312, - 783.0419921875, - 1020.2771606445312 - ], - "score": 0.9998669624328613 - }, - { - "category_id": 2, - "poly": [ - 1346.875, - 196.13433837890625, - 1379.426025390625, - 196.13433837890625, - 1379.426025390625, - 215.6661834716797, - 1346.875, - 215.6661834716797 - ], - "score": 0.9998455047607422 - }, - { - "category_id": 0, - "poly": [ - 119.71259307861328, - 1178.468994140625, - 627.7359008789062, - 1178.468994140625, - 627.7359008789062, - 1205.4873046875, - 119.71259307861328, - 1205.4873046875 - ], - "score": 0.9995098114013672 - }, - { - "category_id": 2, - "poly": [ - 464.848388671875, - 193.9952392578125, - 1033.1187744140625, - 193.9952392578125, - 1033.1187744140625, - 218.6742706298828, - 464.848388671875, - 218.6742706298828 - ], - "score": 0.9992669820785522 - }, - { - "category_id": 7, - "poly": [ - 116.6382827758789, - 699.0242309570312, - 1381.2982177734375, - 699.0242309570312, - 1381.2982177734375, - 856.2595825195312, - 116.6382827758789, - 856.2595825195312 - ], - "score": 0.9891747236251831 - }, - { - "category_id": 13, - "poly": [ - 458, - 778, - 601, - 778, - 601, - 806, - 458, - 806 - ], - "score": 0.91, - "latex": "\\sum Y/\\sum(a+Y)" - }, - { - "category_id": 13, - "poly": [ - 169, - 1025, - 221, - 1025, - 221, - 1056, - 169, - 1056 - ], - "score": 0.91, - "latex": "T_{\\mathrm{half}}" - }, - { - "category_id": 13, - "poly": [ - 464, - 750, - 607, - 750, - 607, - 778, - 464, - 778 - ], - "score": 0.88, - "latex": "\\sum Y/\\sum(a+Y)" - }, - { - "category_id": 13, - "poly": [ - 1201, - 1191, - 1277, - 1191, - 1277, - 1221, - 1201, - 1221 - ], - "score": 0.88, - "latex": "\\Delta N_{\\mathrm{zero}}" - }, - { - "category_id": 13, - "poly": [ - 1296, - 1323, - 1350, - 1323, - 1350, - 1353, - 1296, - 1353 - ], - "score": 0.86, - "latex": "50\\%" - }, - { - "category_id": 13, - "poly": [ - 1078, - 1159, - 1101, - 1159, - 1101, - 1185, - 1078, - 1185 - ], - "score": 0.77, - "latex": "E" - }, - { - "category_id": 13, - "poly": [ - 1113, - 1192, - 1133, - 1192, - 1133, - 1219, - 1113, - 1219 - ], - "score": 0.69, - "latex": "^b" - }, - { - "category_id": 13, - "poly": [ - 375, - 811, - 390, - 811, - 390, - 830, - 375, - 830 - ], - "score": 0.67, - "latex": "a" - }, - { - "category_id": 13, - "poly": [ - 990, - 1196, - 1003, - 1196, - 1003, - 1218, - 990, - 1218 - ], - "score": 0.61, - "latex": "t^{\\star}" - }, - { - "category_id": 13, - "poly": [ - 1066, - 812, - 1080, - 812, - 1080, - 830, - 1066, - 830 - ], - "score": 0.58, - "latex": "a" - }, - { - "category_id": 13, - "poly": [ - 431, - 808, - 448, - 808, - 448, - 830, - 431, - 830 - ], - "score": 0.46, - "latex": "Y" - }, - { - "category_id": 13, - "poly": [ - 1246, - 1357, - 1283, - 1357, - 1283, - 1386, - 1246, - 1386 - ], - "score": 0.43, - "latex": "\\mathrm{Ck}" - }, - { - "category_id": 13, - "poly": [ - 773, - 779, - 827, - 779, - 827, - 804, - 773, - 804 - ], - "score": 0.42, - "latex": "100\\mathrm{th}" - }, - { - "category_id": 13, - "poly": [ - 1107, - 1357, - 1144, - 1357, - 1144, - 1386, - 1107, - 1386 - ], - "score": 0.41, - "latex": "\\mathrm{Ck}" - }, - { - "category_id": 13, - "poly": [ - 640, - 807, - 684, - 807, - 684, - 831, - 640, - 831 - ], - "score": 0.29, - "latex": "20\\mathrm{th}" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 257.0, - 188.0, - 257.0, - 188.0, - 277.0, - 117.0, - 277.0 - ], - "score": 1.0, - "text": "Table5" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 284.0, - 1381.0, - 284.0, - 1381.0, - 308.0, - 117.0, - 308.0 - ], - "score": 0.99, - "text": "Published flow reductions from paired catchment analyses, after Scott et al. (2000), Hickel (2001), Nandakumar and Mein (1993) and Fahey and" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 313.0, - 679.0, - 313.0, - 679.0, - 337.0, - 117.0, - 337.0 - ], - "score": 0.96, - "text": "Jackson(1997) compared to estimated reductions in this study" - }, - { - "category_id": 15, - "poly": [ - 818.0, - 1063.0, - 1379.0, - 1063.0, - 1379.0, - 1087.0, - 818.0, - 1087.0 - ], - "score": 0.98, - "text": "As this analysis could only be applied, where there" - }, - { - "category_id": 15, - "poly": [ - 781.0, - 1095.0, - 1380.0, - 1095.0, - 1380.0, - 1122.0, - 781.0, - 1122.0 - ], - "score": 0.98, - "text": "was consistent drying up of streams, it was confined to" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1130.0, - 1378.0, - 1130.0, - 1378.0, - 1151.0, - 784.0, - 1151.0 - ], - "score": 0.99, - "text": "StewartsCreek,PineCreekandRedhillcatchments.The" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1162.0, - 1077.0, - 1162.0, - 1077.0, - 1186.0, - 783.0, - 1186.0 - ], - "score": 1.0, - "text": "modelreturnedvaluesof" - }, - { - "category_id": 15, - "poly": [ - 1102.0, - 1162.0, - 1378.0, - 1162.0, - 1378.0, - 1186.0, - 1102.0, - 1186.0 - ], - "score": 0.94, - "text": "of 0.95, 0.99and 0.99," - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1197.0, - 989.0, - 1197.0, - 989.0, - 1222.0, - 784.0, - 1222.0 - ], - "score": 1.0, - "text": "respectively.The" - }, - { - "category_id": 15, - "poly": [ - 1004.0, - 1197.0, - 1112.0, - 1197.0, - 1112.0, - 1222.0, - 1004.0, - 1222.0 - ], - "score": 0.98, - "text": "-testson" - }, - { - "category_id": 15, - "poly": [ - 1134.0, - 1197.0, - 1200.0, - 1197.0, - 1200.0, - 1222.0, - 1134.0, - 1222.0 - ], - "score": 1.0, - "text": "and" - }, - { - "category_id": 15, - "poly": [ - 1278.0, - 1197.0, - 1380.0, - 1197.0, - 1380.0, - 1222.0, - 1278.0, - 1222.0 - ], - "score": 1.0, - "text": "returned" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1230.0, - 1380.0, - 1230.0, - 1380.0, - 1254.0, - 783.0, - 1254.0 - ], - "score": 0.97, - "text": "significant results at the 0.05 level for both parameters at" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1261.0, - 1379.0, - 1261.0, - 1379.0, - 1286.0, - 783.0, - 1286.0 - ], - "score": 1.0, - "text": "allthreecatchments.Theclimateadjustedzeroflow" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1295.0, - 1377.0, - 1295.0, - 1377.0, - 1319.0, - 783.0, - 1319.0 - ], - "score": 0.98, - "text": "days are shown in Fig. 5. The increases in zero flow days" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 1330.0, - 1295.0, - 1330.0, - 1295.0, - 1351.0, - 782.0, - 1351.0 - ], - "score": 1.0, - "text": "aresubstantialwithflowsconfinedtolessthan" - }, - { - "category_id": 15, - "poly": [ - 1351.0, - 1330.0, - 1379.0, - 1330.0, - 1379.0, - 1351.0, - 1351.0, - 1351.0 - ], - "score": 1.0, - "text": "of" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1360.0, - 1106.0, - 1360.0, - 1106.0, - 1387.0, - 783.0, - 1387.0 - ], - "score": 0.99, - "text": "thetimebyyear8 atStewarts" - }, - { - "category_id": 15, - "poly": [ - 1145.0, - 1360.0, - 1245.0, - 1360.0, - 1245.0, - 1387.0, - 1145.0, - 1387.0 - ], - "score": 0.96, - "text": "and Pine" - }, - { - "category_id": 15, - "poly": [ - 1284.0, - 1360.0, - 1378.0, - 1360.0, - 1378.0, - 1387.0, - 1284.0, - 1387.0 - ], - "score": 0.99, - "text": "and year" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1393.0, - 1380.0, - 1393.0, - 1380.0, - 1420.0, - 783.0, - 1420.0 - ], - "score": 0.99, - "text": "11 at Redhill. The latter has changed from an almost" - }, - { - "category_id": 15, - "poly": [ - 779.0, - 1428.0, - 1379.0, - 1428.0, - 1379.0, - 1454.0, - 779.0, - 1454.0 - ], - "score": 0.98, - "text": "permanent to a highly intermittent stream. The curves" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 1462.0, - 1379.0, - 1462.0, - 1379.0, - 1486.0, - 782.0, - 1486.0 - ], - "score": 0.96, - "text": "are also in sensible agreement with the flow reductions" - }, - { - "category_id": 15, - "poly": [ - 781.0, - 1493.0, - 882.0, - 1493.0, - 882.0, - 1521.0, - 781.0, - 1521.0 - ], - "score": 1.0, - "text": "in Fig. 4." - }, - { - "category_id": 15, - "poly": [ - 152.0, - 1247.0, - 714.0, - 1247.0, - 714.0, - 1272.0, - 152.0, - 1272.0 - ], - "score": 0.94, - "text": "A further check on the overall model performance is" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1283.0, - 714.0, - 1283.0, - 714.0, - 1304.0, - 119.0, - 1304.0 - ], - "score": 1.0, - "text": "acomparisonwithpublishedresultsofpairedcatchment" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1316.0, - 714.0, - 1316.0, - 714.0, - 1339.0, - 120.0, - 1339.0 - ], - "score": 1.0, - "text": "studies.Thedatathatcanbecomparedwithourresults" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1350.0, - 714.0, - 1350.0, - 714.0, - 1374.0, - 120.0, - 1374.0 - ], - "score": 0.97, - "text": "are presented in Table 5 and can be broadly compared" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1381.0, - 714.0, - 1381.0, - 714.0, - 1406.0, - 119.0, - 1406.0 - ], - "score": 0.97, - "text": "with Fig. 4. These data are reductions in years with near" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1415.0, - 717.0, - 1415.0, - 717.0, - 1440.0, - 118.0, - 1440.0 - ], - "score": 0.98, - "text": "average annual rainfall,and at a time after treatment" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1450.0, - 714.0, - 1450.0, - 714.0, - 1474.0, - 120.0, - 1474.0 - ], - "score": 0.98, - "text": "when maximum changes in streamflow have occurred." - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1483.0, - 714.0, - 1483.0, - 714.0, - 1506.0, - 119.0, - 1506.0 - ], - "score": 1.0, - "text": "Table5alsoincludesestimatesonthetotalandlowflow" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1516.0, - 713.0, - 1516.0, - 713.0, - 1541.0, - 118.0, - 1541.0 - ], - "score": 0.97, - "text": "reductions calculated from this study.Results from Pine" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1552.0, - 716.0, - 1552.0, - 716.0, - 1576.0, - 120.0, - 1576.0 - ], - "score": 0.98, - "text": "Creek and Traralgon Creek are not included in Table 5" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1584.0, - 715.0, - 1584.0, - 715.0, - 1609.0, - 118.0, - 1609.0 - ], - "score": 0.97, - "text": "as these catchments are not paired.Exact comparisons" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1619.0, - 714.0, - 1619.0, - 714.0, - 1643.0, - 120.0, - 1643.0 - ], - "score": 0.98, - "text": "are impossible because of the rainfall variability, and" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1650.0, - 713.0, - 1650.0, - 713.0, - 1678.0, - 117.0, - 1678.0 - ], - "score": 0.96, - "text": "lack of calibration period for Redhill. Despite this," - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1684.0, - 714.0, - 1684.0, - 714.0, - 1709.0, - 118.0, - 1709.0 - ], - "score": 1.0, - "text": "Table5showsthattotalandlowflowreductions" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1720.0, - 714.0, - 1720.0, - 714.0, - 1744.0, - 120.0, - 1744.0 - ], - "score": 0.98, - "text": "estimated from our study are comparable to the results" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1753.0, - 714.0, - 1753.0, - 714.0, - 1776.0, - 119.0, - 1776.0 - ], - "score": 0.98, - "text": "frompairedcatchmentstudies,indicating that our" - }, - { - "category_id": 15, - "poly": [ - 121.0, - 1787.0, - 714.0, - 1787.0, - 714.0, - 1811.0, - 121.0, - 1811.0 - ], - "score": 0.95, - "text": "simple model has successfully removed the rainfall" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1820.0, - 187.0, - 1820.0, - 187.0, - 1846.0, - 120.0, - 1846.0 - ], - "score": 0.95, - "text": "signal." - }, - { - "category_id": 15, - "poly": [ - 781.0, - 1617.0, - 928.0, - 1617.0, - 928.0, - 1645.0, - 781.0, - 1645.0 - ], - "score": 1.0, - "text": "5. Discussion" - }, - { - "category_id": 15, - "poly": [ - 817.0, - 1687.0, - 1378.0, - 1687.0, - 1378.0, - 1712.0, - 817.0, - 1712.0 - ], - "score": 0.97, - "text": "The aims of the project have largely been met. The" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 1721.0, - 1377.0, - 1721.0, - 1377.0, - 1745.0, - 782.0, - 1745.0 - ], - "score": 0.97, - "text": "general characterisation of FDCs and adjustment fon" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 1754.0, - 1380.0, - 1754.0, - 1380.0, - 1781.0, - 782.0, - 1781.0 - ], - "score": 0.99, - "text": "climate has been very encouraging given the task of" - }, - { - "category_id": 15, - "poly": [ - 785.0, - 1788.0, - 1380.0, - 1788.0, - 1380.0, - 1812.0, - 785.0, - 1812.0 - ], - "score": 0.96, - "text": "fitting our model to 10 flow percentiles, for 10 different" - }, - { - "category_id": 15, - "poly": [ - 781.0, - 1819.0, - 1378.0, - 1819.0, - 1378.0, - 1846.0, - 781.0, - 1846.0 - ], - "score": 0.93, - "text": "catchments (resulting in 1oo model fits) with" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 995.0, - 711.0, - 995.0, - 711.0, - 1019.0, - 118.0, - 1019.0 - ], - "score": 0.98, - "text": "catchments and the lower deciles at Lambrechtsbos B" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1028.0, - 168.0, - 1028.0, - 168.0, - 1056.0, - 117.0, - 1056.0 - ], - "score": 1.0, - "text": "The" - }, - { - "category_id": 15, - "poly": [ - 222.0, - 1028.0, - 710.0, - 1028.0, - 710.0, - 1056.0, - 222.0, - 1056.0 - ], - "score": 0.97, - "text": "from Glendhu 2 appears to be substantially" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1064.0, - 711.0, - 1064.0, - 711.0, - 1088.0, - 118.0, - 1088.0 - ], - "score": 0.98, - "text": "lower than other published data (Fahey and Jackson" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1095.0, - 187.0, - 1095.0, - 187.0, - 1122.0, - 118.0, - 1122.0 - ], - "score": 0.99, - "text": "1997)." - }, - { - "category_id": 15, - "poly": [ - 783.0, - 994.0, - 987.0, - 994.0, - 987.0, - 1020.0, - 783.0, - 1020.0 - ], - "score": 1.0, - "text": "4.5.Zerofowdays" - }, - { - "category_id": 15, - "poly": [ - 1345.0, - 195.0, - 1381.0, - 195.0, - 1381.0, - 219.0, - 1345.0, - 219.0 - ], - "score": 1.0, - "text": "261" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1182.0, - 626.0, - 1182.0, - 626.0, - 1205.0, - 120.0, - 1205.0 - ], - "score": 0.99, - "text": "4.4.Comparisonwithpairedcatchmentstudies" - }, - { - "category_id": 15, - "poly": [ - 469.0, - 197.0, - 1028.0, - 197.0, - 1028.0, - 220.0, - 469.0, - 220.0 - ], - "score": 0.99, - "text": "P.N.J.Laneet al./JournalofHydrology310(2005)253-265" - }, - { - "category_id": 15, - "poly": [ - 127.0, - 696.0, - 1381.0, - 696.0, - 1381.0, - 727.0, - 127.0, - 727.0 - ], - "score": 0.99, - "text": "a Rainfall refers to the rainfall in the year used for comparison of results. The value in brackets refers to the deviation from the mean annual" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 728.0, - 406.0, - 728.0, - 406.0, - 751.0, - 117.0, - 751.0 - ], - "score": 0.97, - "text": "rainfall for the period of record." - }, - { - "category_id": 15, - "poly": [ - 124.0, - 748.0, - 463.0, - 748.0, - 463.0, - 782.0, - 124.0, - 782.0 - ], - "score": 0.99, - "text": "b Total fow reduction calculated by" - }, - { - "category_id": 15, - "poly": [ - 608.0, - 748.0, - 740.0, - 748.0, - 740.0, - 782.0, - 608.0, - 782.0 - ], - "score": 1.0, - "text": "for all deciles." - }, - { - "category_id": 15, - "poly": [ - 126.0, - 777.0, - 457.0, - 777.0, - 457.0, - 808.0, - 126.0, - 808.0 - ], - "score": 0.97, - "text": "c Low fow reduction calculated by" - }, - { - "category_id": 15, - "poly": [ - 602.0, - 777.0, - 772.0, - 777.0, - 772.0, - 808.0, - 602.0, - 808.0 - ], - "score": 0.99, - "text": "for 70, 80, 90 and" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 777.0, - 933.0, - 777.0, - 933.0, - 808.0, - 828.0, - 808.0 - ], - "score": 0.97, - "text": "percentiles." - }, - { - "category_id": 15, - "poly": [ - 126.0, - 803.0, - 374.0, - 803.0, - 374.0, - 839.0, - 126.0, - 839.0 - ], - "score": 0.97, - "text": "d For Cathedral Peak 3 the" - }, - { - "category_id": 15, - "poly": [ - 391.0, - 803.0, - 430.0, - 803.0, - 430.0, - 839.0, - 391.0, - 839.0 - ], - "score": 1.0, - "text": "and" - }, - { - "category_id": 15, - "poly": [ - 449.0, - 803.0, - 639.0, - 803.0, - 639.0, - 839.0, - 449.0, - 839.0 - ], - "score": 1.0, - "text": "values for the 10 and" - }, - { - "category_id": 15, - "poly": [ - 685.0, - 803.0, - 1065.0, - 803.0, - 1065.0, - 839.0, - 685.0, - 839.0 - ], - "score": 0.99, - "text": "percentiles were excluded as the values of" - }, - { - "category_id": 15, - "poly": [ - 1081.0, - 803.0, - 1380.0, - 803.0, - 1380.0, - 839.0, - 1081.0, - 839.0 - ], - "score": 0.99, - "text": "were lower then the values of the" - }, - { - "category_id": 15, - "poly": [ - 116.0, - 836.0, - 309.0, - 836.0, - 309.0, - 861.0, - 116.0, - 861.0 - ], - "score": 0.98, - "text": "30-100th percentiles." - } - ], - "page_info": { - "page_no": 8, - "height": 2064, - "width": 1512 - } - }, - { - "layout_dets": [ - { - "category_id": 4, - "poly": [ - 131.2040557861328, - 1337.5989990234375, - 733.35986328125, - 1337.5989990234375, - 733.35986328125, - 1417.8536376953125, - 131.2040557861328, - 1417.8536376953125 - ], - "score": 0.9999973177909851 - }, - { - "category_id": 1, - "poly": [ - 131.22463989257812, - 1444.04736328125, - 731.0685424804688, - 1444.04736328125, - 731.0685424804688, - 1847.82861328125, - 131.22463989257812, - 1847.82861328125 - ], - "score": 0.9999927282333374 - }, - { - "category_id": 1, - "poly": [ - 794.774169921875, - 255.46112060546875, - 1396.0106201171875, - 255.46112060546875, - 1396.0106201171875, - 1082.3992919921875, - 794.774169921875, - 1082.3992919921875 - ], - "score": 0.9999898672103882 - }, - { - "category_id": 3, - "poly": [ - 134.4781036376953, - 257.3968200683594, - 736.1229248046875, - 257.3968200683594, - 736.1229248046875, - 1314.7186279296875, - 134.4781036376953, - 1314.7186279296875 - ], - "score": 0.9999856948852539 - }, - { - "category_id": 2, - "poly": [ - 131.43182373046875, - 196.0782012939453, - 165.26609802246094, - 196.0782012939453, - 165.26609802246094, - 215.07960510253906, - 131.43182373046875, - 215.07960510253906 - ], - "score": 0.9999679923057556 - }, - { - "category_id": 1, - "poly": [ - 795.1036376953125, - 1085.7911376953125, - 1395.2923583984375, - 1085.7911376953125, - 1395.2923583984375, - 1847.192138671875, - 795.1036376953125, - 1847.192138671875 - ], - "score": 0.9999593496322632 - }, - { - "category_id": 2, - "poly": [ - 480.6620178222656, - 195.42437744140625, - 1044.6075439453125, - 195.42437744140625, - 1044.6075439453125, - 218.66488647460938, - 480.6620178222656, - 218.66488647460938 - ], - "score": 0.9999507665634155 - }, - { - "category_id": 13, - "poly": [ - 1045, - 452, - 1098, - 452, - 1098, - 482, - 1045, - 482 - ], - "score": 0.87, - "latex": "27\\%" - }, - { - "category_id": 15, - "poly": [ - 130.0, - 1341.0, - 729.0, - 1341.0, - 729.0, - 1364.0, - 130.0, - 1364.0 - ], - "score": 0.96, - "text": "Fig.5. Number of zero flow days for average rainfall following" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1369.0, - 727.0, - 1369.0, - 727.0, - 1388.0, - 132.0, - 1388.0 - ], - "score": 0.99, - "text": "afforestationforStewartsCreek5,RedhillandPineCreek." - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1397.0, - 218.0, - 1397.0, - 218.0, - 1416.0, - 131.0, - 1416.0 - ], - "score": 0.96, - "text": "Australia." - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1447.0, - 727.0, - 1447.0, - 727.0, - 1476.0, - 132.0, - 1476.0 - ], - "score": 0.99, - "text": "substantially varying spatial scales, soils and geology," - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1483.0, - 727.0, - 1483.0, - 727.0, - 1506.0, - 133.0, - 1506.0 - ], - "score": 1.0, - "text": "speciesplantedandclimaticenvironments.Although" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1516.0, - 727.0, - 1516.0, - 727.0, - 1539.0, - 132.0, - 1539.0 - ], - "score": 0.96, - "text": "there were poor resultsfor individual deciles,the FDCs" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1551.0, - 728.0, - 1551.0, - 728.0, - 1575.0, - 133.0, - 1575.0 - ], - "score": 0.96, - "text": "at eight of the10 catchments were adequatelydescribed" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1583.0, - 729.0, - 1583.0, - 729.0, - 1607.0, - 131.0, - 1607.0 - ], - "score": 0.99, - "text": "by Eq. (2). The results of the statistical tests in which the" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1618.0, - 727.0, - 1618.0, - 727.0, - 1642.0, - 132.0, - 1642.0 - ], - "score": 0.98, - "text": "rainfall term was significant for most deciles demon-" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1651.0, - 727.0, - 1651.0, - 727.0, - 1678.0, - 133.0, - 1678.0 - ], - "score": 0.98, - "text": "strated the model structure was appropriate for adjusting" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1685.0, - 728.0, - 1685.0, - 728.0, - 1709.0, - 132.0, - 1709.0 - ], - "score": 0.95, - "text": "the FDCs for climatic (rainfall) variability.The" - }, - { - "category_id": 15, - "poly": [ - 134.0, - 1720.0, - 728.0, - 1720.0, - 728.0, - 1744.0, - 134.0, - 1744.0 - ], - "score": 0.96, - "text": "comparisons of our results with published paired" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1752.0, - 728.0, - 1752.0, - 728.0, - 1777.0, - 131.0, - 1777.0 - ], - "score": 0.97, - "text": "catchmentanalyses are satisfactory,althoughthe" - }, - { - "category_id": 15, - "poly": [ - 134.0, - 1787.0, - 729.0, - 1787.0, - 729.0, - 1811.0, - 134.0, - 1811.0 - ], - "score": 0.97, - "text": "different methodologies make direct comparisons of" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1820.0, - 730.0, - 1820.0, - 730.0, - 1844.0, - 133.0, - 1844.0 - ], - "score": 0.98, - "text": "deciles withtotalflowuncertain.Lowflows at" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 259.0, - 1390.0, - 259.0, - 1390.0, - 282.0, - 796.0, - 282.0 - ], - "score": 1.0, - "text": "LambrechtsbosBappeartobeover-estimatedbyour" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 294.0, - 1390.0, - 294.0, - 1390.0, - 317.0, - 797.0, - 317.0 - ], - "score": 0.96, - "text": "model, which is unsurprising as the model fit was poor." - }, - { - "category_id": 15, - "poly": [ - 798.0, - 326.0, - 1392.0, - 326.0, - 1392.0, - 350.0, - 798.0, - 350.0 - ], - "score": 0.99, - "text": "The remaining four South African catchments, and also" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 359.0, - 1392.0, - 359.0, - 1392.0, - 383.0, - 796.0, - 383.0 - ], - "score": 0.97, - "text": "Redhill and Stewarts Creek are in good agreement with" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 391.0, - 1395.0, - 391.0, - 1395.0, - 418.0, - 797.0, - 418.0 - ], - "score": 1.0, - "text": "the published values, particularly when the deviation of" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 426.0, - 1392.0, - 426.0, - 1392.0, - 450.0, - 797.0, - 450.0 - ], - "score": 0.97, - "text": "average rainfall is considered. Glendhu 2 reductions are" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 459.0, - 1044.0, - 459.0, - 1044.0, - 483.0, - 797.0, - 483.0 - ], - "score": 1.0, - "text": "closetothereported" - }, - { - "category_id": 15, - "poly": [ - 1099.0, - 459.0, - 1392.0, - 459.0, - 1392.0, - 483.0, - 1099.0, - 483.0 - ], - "score": 0.95, - "text": ",but our model produces" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 493.0, - 1390.0, - 493.0, - 1390.0, - 516.0, - 796.0, - 516.0 - ], - "score": 0.95, - "text": "a heavier impact on thelower flows. Overall, it appears" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 525.0, - 1393.0, - 525.0, - 1393.0, - 548.0, - 796.0, - 548.0 - ], - "score": 1.0, - "text": "therearenosignificantdiscrepancieswiththepublished" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 559.0, - 1391.0, - 559.0, - 1391.0, - 583.0, - 796.0, - 583.0 - ], - "score": 0.98, - "text": "paired catchment analyses.We suggest our technique" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 593.0, - 1393.0, - 593.0, - 1393.0, - 615.0, - 796.0, - 615.0 - ], - "score": 1.0, - "text": "representsanalternativetothepaired-catchmentmethod" - }, - { - "category_id": 15, - "poly": [ - 793.0, - 623.0, - 1392.0, - 623.0, - 1392.0, - 651.0, - 793.0, - 651.0 - ], - "score": 0.98, - "text": "for assessing hydrologic response to vegetation treat-" - }, - { - "category_id": 15, - "poly": [ - 795.0, - 659.0, - 1393.0, - 659.0, - 1393.0, - 679.0, - 795.0, - 679.0 - ], - "score": 1.0, - "text": "ment,wherepaireddataareunavailable.Themethod" - }, - { - "category_id": 15, - "poly": [ - 794.0, - 690.0, - 1392.0, - 690.0, - 1392.0, - 713.0, - 794.0, - 713.0 - ], - "score": 0.95, - "text": "has not yet resultedin a predictive model,but has" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 725.0, - 1392.0, - 725.0, - 1392.0, - 748.0, - 796.0, - 748.0 - ], - "score": 0.98, - "text": "increasedourknowledgeof afforestationimpacts.This" - }, - { - "category_id": 15, - "poly": [ - 794.0, - 756.0, - 1396.0, - 756.0, - 1396.0, - 783.0, - 794.0, - 783.0 - ], - "score": 0.98, - "text": "is a valuable outcome given the contentious issue of" - }, - { - "category_id": 15, - "poly": [ - 798.0, - 789.0, - 1392.0, - 789.0, - 1392.0, - 813.0, - 798.0, - 813.0 - ], - "score": 0.97, - "text": "afforestation in Australia and other countries, and a" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 824.0, - 1393.0, - 824.0, - 1393.0, - 846.0, - 796.0, - 846.0 - ], - "score": 1.0, - "text": "currentpaucityofdataoninter-annualflows.Itshould" - }, - { - "category_id": 15, - "poly": [ - 793.0, - 855.0, - 1391.0, - 855.0, - 1391.0, - 884.0, - 793.0, - 884.0 - ], - "score": 0.98, - "text": "be noted that nine of the 10 catchment were pine species." - }, - { - "category_id": 15, - "poly": [ - 794.0, - 889.0, - 1394.0, - 889.0, - 1394.0, - 914.0, - 794.0, - 914.0 - ], - "score": 1.0, - "text": "Moredataisrequiredtocomparetheimpactof" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 924.0, - 1391.0, - 924.0, - 1391.0, - 948.0, - 796.0, - 948.0 - ], - "score": 0.99, - "text": "hardwood species, particularly eucalypts, on the FDC." - }, - { - "category_id": 15, - "poly": [ - 798.0, - 956.0, - 1391.0, - 956.0, - 1391.0, - 979.0, - 798.0, - 979.0 - ], - "score": 0.98, - "text": "Unfortunately thesedata arecurrentlyscarce.Thereare" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 988.0, - 1392.0, - 988.0, - 1392.0, - 1014.0, - 796.0, - 1014.0 - ], - "score": 0.97, - "text": "substantial data on the physiological controls of eucalypt" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1024.0, - 1393.0, - 1024.0, - 1393.0, - 1047.0, - 797.0, - 1047.0 - ], - "score": 0.95, - "text": "water use(seeWhitehead andBeadle,2004),butnot at" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1058.0, - 1010.0, - 1058.0, - 1010.0, - 1079.0, - 797.0, - 1079.0 - ], - "score": 1.0, - "text": "thecatchmentscale" - }, - { - "category_id": 15, - "poly": [ - 129.0, - 195.0, - 167.0, - 195.0, - 167.0, - 219.0, - 129.0, - 219.0 - ], - "score": 1.0, - "text": "262" - }, - { - "category_id": 15, - "poly": [ - 830.0, - 1088.0, - 1393.0, - 1088.0, - 1393.0, - 1113.0, - 830.0, - 1113.0 - ], - "score": 0.99, - "text": "Themodelfitsshowwehavequantifiedthenet" - }, - { - "category_id": 15, - "poly": [ - 798.0, - 1123.0, - 1390.0, - 1123.0, - 1390.0, - 1147.0, - 798.0, - 1147.0 - ], - "score": 0.99, - "text": "impactofafforestationforthemajorityoftheflow" - }, - { - "category_id": 15, - "poly": [ - 794.0, - 1156.0, - 1393.0, - 1156.0, - 1393.0, - 1180.0, - 794.0, - 1180.0 - ], - "score": 0.99, - "text": "percentiles in the 10 catchments. Results for the 10-50th" - }, - { - "category_id": 15, - "poly": [ - 794.0, - 1190.0, - 1394.0, - 1190.0, - 1394.0, - 1215.0, - 794.0, - 1215.0 - ], - "score": 0.99, - "text": "percentiles wereparticularlyencouraging.Itisnot" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1224.0, - 1391.0, - 1224.0, - 1391.0, - 1245.0, - 796.0, - 1245.0 - ], - "score": 0.99, - "text": "surprisingthattherelationshipbetweenrainfallandflow" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1254.0, - 1391.0, - 1254.0, - 1391.0, - 1279.0, - 796.0, - 1279.0 - ], - "score": 0.98, - "text": "diminishes at lower flows (60-100th percentile),where" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1289.0, - 1392.0, - 1289.0, - 1392.0, - 1312.0, - 796.0, - 1312.0 - ], - "score": 1.0, - "text": "seasonalstorageeffectsandrainfalldistributionbecome" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1323.0, - 1393.0, - 1323.0, - 1393.0, - 1345.0, - 796.0, - 1345.0 - ], - "score": 0.99, - "text": "moreimportantdriversforrunoffgeneration.The" - }, - { - "category_id": 15, - "poly": [ - 794.0, - 1355.0, - 1393.0, - 1355.0, - 1393.0, - 1378.0, - 794.0, - 1378.0 - ], - "score": 0.99, - "text": "poorestmodelfitsweregainedforLambrechtsbosA" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1388.0, - 1392.0, - 1388.0, - 1392.0, - 1411.0, - 797.0, - 1411.0 - ], - "score": 0.99, - "text": "andB.ThelikelyreasonatLambrechtsbosAisan" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1421.0, - 1393.0, - 1421.0, - 1393.0, - 1444.0, - 797.0, - 1444.0 - ], - "score": 1.0, - "text": "observedannualdecreaseinstandwateruseafter12" - }, - { - "category_id": 15, - "poly": [ - 795.0, - 1456.0, - 1392.0, - 1456.0, - 1392.0, - 1477.0, - 795.0, - 1477.0 - ], - "score": 0.98, - "text": "years(Scottetal.,2000)whichdoesnotconformtothe" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1489.0, - 1394.0, - 1489.0, - 1394.0, - 1511.0, - 797.0, - 1511.0 - ], - "score": 0.99, - "text": "sigmoidalformofourmodeloverthefull19yearsof" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1521.0, - 1393.0, - 1521.0, - 1393.0, - 1544.0, - 796.0, - 1544.0 - ], - "score": 0.97, - "text": "record.Thefailureof themodel tofit thelower flows at" - }, - { - "category_id": 15, - "poly": [ - 794.0, - 1553.0, - 1393.0, - 1553.0, - 1393.0, - 1578.0, - 794.0, - 1578.0 - ], - "score": 0.97, - "text": "LambrechtsbosB is not as explicable.A decrease in" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1588.0, - 1392.0, - 1588.0, - 1392.0, - 1611.0, - 797.0, - 1611.0 - ], - "score": 1.0, - "text": "standwateruseinthiscatchmentisobservedasthe" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1622.0, - 1392.0, - 1622.0, - 1392.0, - 1645.0, - 796.0, - 1645.0 - ], - "score": 0.96, - "text": "plantation ages,butdoesnot occur during thefirst 20" - }, - { - "category_id": 15, - "poly": [ - 795.0, - 1656.0, - 1391.0, - 1656.0, - 1391.0, - 1677.0, - 795.0, - 1677.0 - ], - "score": 0.98, - "text": "yearsaftertreatment(Scottetal.,2000).Otherdatafrom" - }, - { - "category_id": 15, - "poly": [ - 796.0, - 1685.0, - 1392.0, - 1685.0, - 1392.0, - 1711.0, - 796.0, - 1711.0 - ], - "score": 0.92, - "text": "South Africa (Scott et al.,2000)indicate there are" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1718.0, - 1389.0, - 1718.0, - 1389.0, - 1745.0, - 797.0, - 1745.0 - ], - "score": 0.98, - "text": "diminished flow reductions as plantations age, but again" - }, - { - "category_id": 15, - "poly": [ - 795.0, - 1754.0, - 1393.0, - 1754.0, - 1393.0, - 1779.0, - 795.0, - 1779.0 - ], - "score": 0.97, - "text": "generally after 20 years.Our use of an asymptotic curve" - }, - { - "category_id": 15, - "poly": [ - 797.0, - 1788.0, - 1393.0, - 1788.0, - 1393.0, - 1810.0, - 797.0, - 1810.0 - ], - "score": 1.0, - "text": "assumesanewequilibriumofstandwateruseis" - }, - { - "category_id": 15, - "poly": [ - 795.0, - 1818.0, - 1390.0, - 1818.0, - 1390.0, - 1846.0, - 795.0, - 1846.0 - ], - "score": 0.98, - "text": "reached. The results of the model fitting generally justify" - }, - { - "category_id": 15, - "poly": [ - 481.0, - 196.0, - 1042.0, - 196.0, - 1042.0, - 220.0, - 481.0, - 220.0 - ], - "score": 0.96, - "text": "P.N.J.Lane et al./ Journal of Hydrology 310(2005) 253-265" - } - ], - "page_info": { - "page_no": 9, - "height": 2064, - "width": 1512 - } - }, - { - "layout_dets": [ - { - "category_id": 1, - "poly": [ - 117.55418395996094, - 251.62586975097656, - 717.4569702148438, - 251.62586975097656, - 717.4569702148438, - 582.5938720703125, - 117.55418395996094, - 582.5938720703125 - ], - "score": 0.9999960660934448 - }, - { - "category_id": 1, - "poly": [ - 781.7598266601562, - 253.2869873046875, - 1382.113525390625, - 253.2869873046875, - 1382.113525390625, - 749.5455322265625, - 781.7598266601562, - 749.5455322265625 - ], - "score": 0.9999920129776001 - }, - { - "category_id": 1, - "poly": [ - 780.9730224609375, - 1416.1875, - 1381.69287109375, - 1416.1875, - 1381.69287109375, - 1847.7166748046875, - 780.9730224609375, - 1847.7166748046875 - ], - "score": 0.9999914169311523 - }, - { - "category_id": 1, - "poly": [ - 117.01396942138672, - 1416.33447265625, - 717.9161987304688, - 1416.33447265625, - 717.9161987304688, - 1848.1839599609375, - 117.01396942138672, - 1848.1839599609375 - ], - "score": 0.9999870657920837 - }, - { - "category_id": 1, - "poly": [ - 781.1908569335938, - 752.2108154296875, - 1380.9827880859375, - 752.2108154296875, - 1380.9827880859375, - 1280.6949462890625, - 781.1908569335938, - 1280.6949462890625 - ], - "score": 0.9999850988388062 - }, - { - "category_id": 1, - "poly": [ - 117.43836975097656, - 885.7890014648438, - 718.2291870117188, - 885.7890014648438, - 718.2291870117188, - 1415.08984375, - 117.43836975097656, - 1415.08984375 - ], - "score": 0.9999825358390808 - }, - { - "category_id": 1, - "poly": [ - 118.48710632324219, - 587.1766357421875, - 716.4562377929688, - 587.1766357421875, - 716.4562377929688, - 883.3397216796875, - 118.48710632324219, - 883.3397216796875 - ], - "score": 0.9999718070030212 - }, - { - "category_id": 2, - "poly": [ - 1346.4129638671875, - 196.0000762939453, - 1381.5977783203125, - 196.0000762939453, - 1381.5977783203125, - 216.04489135742188, - 1346.4129638671875, - 216.04489135742188 - ], - "score": 0.9999490976333618 - }, - { - "category_id": 0, - "poly": [ - 781.2360229492188, - 1351.0572509765625, - 1112.8250732421875, - 1351.0572509765625, - 1112.8250732421875, - 1380.2672119140625, - 781.2360229492188, - 1380.2672119140625 - ], - "score": 0.9996971487998962 - }, - { - "category_id": 2, - "poly": [ - 466.37176513671875, - 195.2890167236328, - 1031.220458984375, - 195.2890167236328, - 1031.220458984375, - 219.7666778564453, - 466.37176513671875, - 219.7666778564453 - ], - "score": 0.9995570182800293 - }, - { - "category_id": 13, - "poly": [ - 510, - 1017, - 563, - 1017, - 563, - 1047, - 510, - 1047 - ], - "score": 0.89, - "latex": "85\\%" - }, - { - "category_id": 13, - "poly": [ - 1121, - 321, - 1143, - 321, - 1143, - 347, - 1121, - 347 - ], - "score": 0.55, - "latex": "E." - }, - { - "category_id": 13, - "poly": [ - 433, - 354, - 456, - 354, - 456, - 380, - 433, - 380 - ], - "score": 0.46, - "latex": "E." - }, - { - "category_id": 13, - "poly": [ - 578, - 1018, - 683, - 1018, - 683, - 1048, - 578, - 1048 - ], - "score": 0.39, - "latex": "1260\\,\\mathrm{mm}" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 257.0, - 713.0, - 257.0, - 713.0, - 283.0, - 120.0, - 283.0 - ], - "score": 0.98, - "text": "this assumption for the length of commercial plantation" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 293.0, - 711.0, - 293.0, - 711.0, - 317.0, - 119.0, - 317.0 - ], - "score": 0.97, - "text": "growth (up to 20 years) considered here. The physio-" - }, - { - "category_id": 15, - "poly": [ - 121.0, - 325.0, - 714.0, - 325.0, - 714.0, - 349.0, - 121.0, - 349.0 - ], - "score": 0.97, - "text": "logical relationshipbetween stand age andwaterusefor" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 360.0, - 432.0, - 360.0, - 432.0, - 383.0, - 119.0, - 383.0 - ], - "score": 1.0, - "text": "plantationspeciesotherthan" - }, - { - "category_id": 15, - "poly": [ - 457.0, - 360.0, - 715.0, - 360.0, - 715.0, - 383.0, - 457.0, - 383.0 - ], - "score": 1.0, - "text": "regnanshavenotbeen" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 388.0, - 714.0, - 388.0, - 714.0, - 419.0, - 118.0, - 419.0 - ], - "score": 0.99, - "text": "thoroughly investigated, although Cornish and Vertessy" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 422.0, - 716.0, - 422.0, - 716.0, - 454.0, - 117.0, - 454.0 - ], - "score": 0.98, - "text": "(2001) and Roberts et al. (2001) have shown young" - }, - { - "category_id": 15, - "poly": [ - 121.0, - 461.0, - 714.0, - 461.0, - 714.0, - 482.0, - 121.0, - 482.0 - ], - "score": 1.0, - "text": "mixedspecieseucalyptforestsmayusemorewaterthan" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 490.0, - 714.0, - 490.0, - 714.0, - 517.0, - 118.0, - 517.0 - ], - "score": 0.99, - "text": "mature stands, and Putahena and Cordery (2000) suggest" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 525.0, - 714.0, - 525.0, - 714.0, - 549.0, - 120.0, - 549.0 - ], - "score": 1.0, - "text": "maximumPinusradiatawaterusemayhavebeen" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 559.0, - 654.0, - 559.0, - 654.0, - 580.0, - 120.0, - 580.0 - ], - "score": 0.99, - "text": "reachedafter12years,withasubsequentdecline." - }, - { - "category_id": 15, - "poly": [ - 819.0, - 259.0, - 1376.0, - 259.0, - 1376.0, - 282.0, - 819.0, - 282.0 - ], - "score": 0.99, - "text": "TraralgonCreekwouldbeexpected tohaveboththe" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 292.0, - 1377.0, - 292.0, - 1377.0, - 317.0, - 782.0, - 317.0 - ], - "score": 0.97, - "text": "most subdued flow reductions and longer response time" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 325.0, - 1120.0, - 325.0, - 1120.0, - 351.0, - 782.0, - 351.0 - ], - "score": 0.93, - "text": "because of the large area of" - }, - { - "category_id": 15, - "poly": [ - 1144.0, - 325.0, - 1381.0, - 325.0, - 1381.0, - 351.0, - 1144.0, - 351.0 - ], - "score": 0.98, - "text": "regnans forest,and" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 359.0, - 1380.0, - 359.0, - 1380.0, - 380.0, - 784.0, - 380.0 - ], - "score": 1.0, - "text": "uncertainvegetationrecord.Peakstandwateruseofa" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 389.0, - 1377.0, - 389.0, - 1377.0, - 417.0, - 782.0, - 417.0 - ], - "score": 0.96, - "text": "natural stand of this species is around 30 years." - }, - { - "category_id": 15, - "poly": [ - 786.0, - 425.0, - 1377.0, - 425.0, - 1377.0, - 448.0, - 786.0, - 448.0 - ], - "score": 0.98, - "text": "Additionallyinthislarge,‘realworld'catchment" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 458.0, - 1379.0, - 458.0, - 1379.0, - 483.0, - 783.0, - 483.0 - ], - "score": 1.0, - "text": "thereisacontinuouscycleofforestmanagement" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 489.0, - 1380.0, - 489.0, - 1380.0, - 517.0, - 783.0, - 517.0 - ], - "score": 0.99, - "text": "which includes harvesting. A mixture of pasture and" - }, - { - "category_id": 15, - "poly": [ - 785.0, - 522.0, - 1379.0, - 522.0, - 1379.0, - 551.0, - 785.0, - 551.0 - ], - "score": 0.98, - "text": "'scrub', which could represent significant understorey" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 558.0, - 1377.0, - 558.0, - 1377.0, - 580.0, - 784.0, - 580.0 - ], - "score": 0.99, - "text": "stands,werereplacedbyplantationspecies.Conse-" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 591.0, - 1382.0, - 591.0, - 1382.0, - 617.0, - 783.0, - 617.0 - ], - "score": 0.99, - "text": "quently the difference between pre and post treatment" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 625.0, - 1381.0, - 625.0, - 1381.0, - 648.0, - 783.0, - 648.0 - ], - "score": 0.96, - "text": "ETmaybeless than atother catchments.Reductions of" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 657.0, - 1377.0, - 657.0, - 1377.0, - 682.0, - 784.0, - 682.0 - ], - "score": 0.96, - "text": "this magnitude could be more readily expected in larger," - }, - { - "category_id": 15, - "poly": [ - 783.0, - 689.0, - 1378.0, - 689.0, - 1378.0, - 715.0, - 783.0, - 715.0 - ], - "score": 0.97, - "text": "multi land use catchments than the very high impacts" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 723.0, - 1291.0, - 723.0, - 1291.0, - 747.0, - 784.0, - 747.0 - ], - "score": 0.98, - "text": "estimated at the smaller Australian catchments." - }, - { - "category_id": 15, - "poly": [ - 818.0, - 1421.0, - 1380.0, - 1421.0, - 1380.0, - 1449.0, - 818.0, - 1449.0 - ], - "score": 0.97, - "text": "This project sought to (i) develop a method to remove" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1455.0, - 1377.0, - 1455.0, - 1377.0, - 1479.0, - 783.0, - 1479.0 - ], - "score": 0.96, - "text": "the climate signal from streamflow records to identify" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1489.0, - 1379.0, - 1489.0, - 1379.0, - 1512.0, - 784.0, - 1512.0 - ], - "score": 0.99, - "text": "theimpactofvegetationonflowfromafforested" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1522.0, - 1378.0, - 1522.0, - 1378.0, - 1546.0, - 784.0, - 1546.0 - ], - "score": 0.97, - "text": "catchments,and (i) quantify this impact on the flow" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1554.0, - 1380.0, - 1554.0, - 1380.0, - 1581.0, - 783.0, - 1581.0 - ], - "score": 0.96, - "text": "duration curve. A simple model was proposed that" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 1588.0, - 1380.0, - 1588.0, - 1380.0, - 1613.0, - 782.0, - 1613.0 - ], - "score": 0.97, - "text": "considered the age of plantation and the annual rainfall" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1623.0, - 1378.0, - 1623.0, - 1378.0, - 1646.0, - 784.0, - 1646.0 - ], - "score": 0.98, - "text": "tobetheprincipal driversfor evapotranspiration.This" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1655.0, - 1378.0, - 1655.0, - 1378.0, - 1677.0, - 784.0, - 1677.0 - ], - "score": 0.99, - "text": "modelwasfittedtotheobserveddecilesoftheFDC,and" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1688.0, - 1378.0, - 1688.0, - 1378.0, - 1712.0, - 784.0, - 1712.0 - ], - "score": 0.97, - "text": "the climate signal was then removed from the stream-" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 1718.0, - 1380.0, - 1718.0, - 1380.0, - 1746.0, - 782.0, - 1746.0 - ], - "score": 0.98, - "text": "flow records by adjusting the FDC for average rainfall" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1755.0, - 1378.0, - 1755.0, - 1378.0, - 1777.0, - 783.0, - 1777.0 - ], - "score": 1.0, - "text": "overtheperiodofrecord.Themodelwastestedand" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1787.0, - 1377.0, - 1787.0, - 1377.0, - 1811.0, - 784.0, - 1811.0 - ], - "score": 0.97, - "text": "applied to 10 afforested catchments.We successfully" - }, - { - "category_id": 15, - "poly": [ - 782.0, - 1818.0, - 1379.0, - 1818.0, - 1379.0, - 1845.0, - 782.0, - 1845.0 - ], - "score": 0.96, - "text": "fitted our model to catchments with varying spatial" - }, - { - "category_id": 15, - "poly": [ - 154.0, - 1422.0, - 713.0, - 1422.0, - 713.0, - 1448.0, - 154.0, - 1448.0 - ], - "score": 0.98, - "text": "The response groups may be in part explained by the" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1457.0, - 714.0, - 1457.0, - 714.0, - 1478.0, - 119.0, - 1478.0 - ], - "score": 1.0, - "text": "storagecharacteristicsofthecatchments.Accurate" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1489.0, - 714.0, - 1489.0, - 714.0, - 1512.0, - 118.0, - 1512.0 - ], - "score": 0.99, - "text": "measuresofstoragearenotavailablefrom theliterature," - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1521.0, - 715.0, - 1521.0, - 715.0, - 1544.0, - 119.0, - 1544.0 - ], - "score": 0.97, - "text": "but thesoil depths and thebaseflowindex(Table1)both" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1555.0, - 714.0, - 1555.0, - 714.0, - 1577.0, - 120.0, - 1577.0 - ], - "score": 1.0, - "text": "showthethreesoutheasternAustraliancatchmentswith" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1589.0, - 715.0, - 1589.0, - 715.0, - 1612.0, - 120.0, - 1612.0 - ], - "score": 1.0, - "text": "thegreatestreductionarelikelytohavethelowest" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1622.0, - 712.0, - 1622.0, - 712.0, - 1646.0, - 120.0, - 1646.0 - ], - "score": 0.99, - "text": "storage capacity. The greater flow reductions, particu-" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1653.0, - 714.0, - 1653.0, - 714.0, - 1679.0, - 119.0, - 1679.0 - ], - "score": 0.95, - "text": "larly for low flows,could be expected under these" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1687.0, - 714.0, - 1687.0, - 714.0, - 1711.0, - 118.0, - 1711.0 - ], - "score": 0.99, - "text": "conditions. Inclusion of a storage term in the model is an" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1719.0, - 715.0, - 1719.0, - 715.0, - 1746.0, - 120.0, - 1746.0 - ], - "score": 0.99, - "text": "obvious option for improving the analysis. However the" - }, - { - "category_id": 15, - "poly": [ - 121.0, - 1755.0, - 716.0, - 1755.0, - 716.0, - 1779.0, - 121.0, - 1779.0 - ], - "score": 0.96, - "text": "addition of extra parameters would be at the cost of" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1789.0, - 712.0, - 1789.0, - 712.0, - 1812.0, - 120.0, - 1812.0 - ], - "score": 0.97, - "text": "maintaining model simplicity,particularly as character" - }, - { - "category_id": 15, - "poly": [ - 120.0, - 1821.0, - 517.0, - 1821.0, - 517.0, - 1847.0, - 120.0, - 1847.0 - ], - "score": 0.99, - "text": "ising a transient storage is not trivial." - }, - { - "category_id": 15, - "poly": [ - 818.0, - 758.0, - 1376.0, - 758.0, - 1376.0, - 781.0, - 818.0, - 781.0 - ], - "score": 1.0, - "text": "Theanalysisofzeroflowdayswassuccessful" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 790.0, - 1378.0, - 790.0, - 1378.0, - 815.0, - 784.0, - 815.0 - ], - "score": 0.98, - "text": "demonstrating that theimpact onflowintermittence can" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 824.0, - 1377.0, - 824.0, - 1377.0, - 847.0, - 783.0, - 847.0 - ], - "score": 0.99, - "text": "beevaluatedwithoutof theentireFDC.Thiswashelpful" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 857.0, - 1379.0, - 857.0, - 1379.0, - 881.0, - 784.0, - 881.0 - ], - "score": 0.99, - "text": "as the change in the higher percentiles (low flows) could" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 890.0, - 1378.0, - 890.0, - 1378.0, - 912.0, - 783.0, - 912.0 - ], - "score": 1.0, - "text": "notalwaysbemodelled.Theresultsforthethree" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 924.0, - 1378.0, - 924.0, - 1378.0, - 945.0, - 784.0, - 945.0 - ], - "score": 1.0, - "text": "catchmentsanalysedarearatherstarkindicationofthe" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 958.0, - 1378.0, - 958.0, - 1378.0, - 980.0, - 783.0, - 980.0 - ], - "score": 1.0, - "text": "potentialforhighlyincreasedzeroflowperiodsinsmall" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 989.0, - 1377.0, - 989.0, - 1377.0, - 1013.0, - 783.0, - 1013.0 - ], - "score": 0.98, - "text": "catchments, at least in south-eastern Australia. However." - }, - { - "category_id": 15, - "poly": [ - 781.0, - 1022.0, - 1381.0, - 1022.0, - 1381.0, - 1046.0, - 781.0, - 1046.0 - ], - "score": 0.99, - "text": "it should be noted these curves probably represent a" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1056.0, - 1379.0, - 1056.0, - 1379.0, - 1079.0, - 783.0, - 1079.0 - ], - "score": 1.0, - "text": "maximumresponseastheyareallderivedfromsmall" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1090.0, - 1376.0, - 1090.0, - 1376.0, - 1114.0, - 784.0, - 1114.0 - ], - "score": 0.96, - "text": "catchments with smallstorage capacities and large" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1123.0, - 1379.0, - 1123.0, - 1379.0, - 1146.0, - 783.0, - 1146.0 - ], - "score": 0.99, - "text": "percentagesof afforestation.Thismethodcouldbeused" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1156.0, - 1377.0, - 1156.0, - 1377.0, - 1180.0, - 783.0, - 1180.0 - ], - "score": 0.95, - "text": "to determine change in the occurrence of any given flow" - }, - { - "category_id": 15, - "poly": [ - 781.0, - 1188.0, - 1379.0, - 1188.0, - 1379.0, - 1213.0, - 781.0, - 1213.0 - ], - "score": 1.0, - "text": "inresponsetoafforestation;e.g.todeterminethe" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1219.0, - 1379.0, - 1219.0, - 1379.0, - 1249.0, - 783.0, - 1249.0 - ], - "score": 0.94, - "text": "likelihood of maintaining a reservoir storage or an" - }, - { - "category_id": 15, - "poly": [ - 783.0, - 1255.0, - 1376.0, - 1255.0, - 1376.0, - 1280.0, - 783.0, - 1280.0 - ], - "score": 0.98, - "text": "environmentalflowthatrequires anaveragecriticalflow." - }, - { - "category_id": 15, - "poly": [ - 154.0, - 889.0, - 714.0, - 889.0, - 714.0, - 914.0, - 154.0, - 914.0 - ], - "score": 0.99, - "text": "Themagnitudeof theresponsewithinGroup2varies" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 924.0, - 715.0, - 924.0, - 715.0, - 946.0, - 118.0, - 946.0 - ], - "score": 0.99, - "text": "considerably,withgreaterreductioninflowsinthetwo" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 955.0, - 714.0, - 955.0, - 714.0, - 980.0, - 118.0, - 980.0 - ], - "score": 0.98, - "text": "Cathedral Peak catchments,and Lambrechtsbos B." - }, - { - "category_id": 15, - "poly": [ - 119.0, - 991.0, - 714.0, - 991.0, - 714.0, - 1014.0, - 119.0, - 1014.0 - ], - "score": 1.0, - "text": "Potentialevaporationisinphasewithrainfallatthe" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1024.0, - 509.0, - 1024.0, - 509.0, - 1047.0, - 119.0, - 1047.0 - ], - "score": 1.0, - "text": "CathedralPeaksitesastheyreceive" - }, - { - "category_id": 15, - "poly": [ - 684.0, - 1024.0, - 715.0, - 1024.0, - 715.0, - 1047.0, - 684.0, - 1047.0 - ], - "score": 0.81, - "text": "on" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1056.0, - 716.0, - 1056.0, - 716.0, - 1079.0, - 119.0, - 1079.0 - ], - "score": 0.98, - "text": "average)of theirrainfallinsummer.Theconjunction of" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1089.0, - 713.0, - 1089.0, - 713.0, - 1116.0, - 118.0, - 1116.0 - ], - "score": 0.98, - "text": "peak demand and plant water availability may explain" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1120.0, - 715.0, - 1120.0, - 715.0, - 1148.0, - 118.0, - 1148.0 - ], - "score": 0.98, - "text": "the high reductions relative to the remaining catchments" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 1156.0, - 715.0, - 1156.0, - 715.0, - 1182.0, - 117.0, - 1182.0 - ], - "score": 0.96, - "text": "in Group 2. In addition, the stocking density was" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1188.0, - 712.0, - 1188.0, - 712.0, - 1213.0, - 118.0, - 1213.0 - ], - "score": 0.96, - "text": "described as‘abnormally dense’by Scott et al.(2000)" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1221.0, - 715.0, - 1221.0, - 715.0, - 1246.0, - 118.0, - 1246.0 - ], - "score": 0.99, - "text": "Growthat Glendhu2wasnotablyslow(Faheyand" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1254.0, - 714.0, - 1254.0, - 714.0, - 1279.0, - 118.0, - 1279.0 - ], - "score": 0.95, - "text": "Jackson, 1997) and Lambrechtsbos A and Biesievlei are" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1289.0, - 714.0, - 1289.0, - 714.0, - 1313.0, - 119.0, - 1313.0 - ], - "score": 0.94, - "text": "described as being within sub optimalgrowth zones" - }, - { - "category_id": 15, - "poly": [ - 121.0, - 1322.0, - 714.0, - 1322.0, - 714.0, - 1346.0, - 121.0, - 1346.0 - ], - "score": 0.96, - "text": "(Scott and Smith,1997) characterised by these authors" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 1356.0, - 715.0, - 1356.0, - 715.0, - 1378.0, - 118.0, - 1378.0 - ], - "score": 1.0, - "text": "ashavingrelativelyslowresponsetimesandlesser" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 1388.0, - 578.0, - 1388.0, - 578.0, - 1412.0, - 119.0, - 1412.0 - ], - "score": 0.97, - "text": "reductions that those at more optimal sites" - }, - { - "category_id": 15, - "poly": [ - 152.0, - 590.0, - 713.0, - 590.0, - 713.0, - 616.0, - 152.0, - 616.0 - ], - "score": 0.98, - "text": "The small Australian catchments converted to pine in" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 627.0, - 715.0, - 627.0, - 715.0, - 647.0, - 119.0, - 647.0 - ], - "score": 0.99, - "text": "responsegroup1(StewartsCreek5,PineCreekand" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 657.0, - 713.0, - 657.0, - 713.0, - 683.0, - 118.0, - 683.0 - ], - "score": 0.97, - "text": "Redhill) have similar shallow soils, potential evapo-" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 691.0, - 711.0, - 691.0, - 711.0, - 714.0, - 119.0, - 714.0 - ], - "score": 0.99, - "text": "transpirationandrainfalldistribution(relativelyuni-" - }, - { - "category_id": 15, - "poly": [ - 117.0, - 724.0, - 713.0, - 724.0, - 713.0, - 749.0, - 117.0, - 749.0 - ], - "score": 0.96, - "text": "form)although Stewarts Creek is significantly wetter." - }, - { - "category_id": 15, - "poly": [ - 117.0, - 756.0, - 714.0, - 756.0, - 714.0, - 782.0, - 117.0, - 782.0 - ], - "score": 0.96, - "text": "The combination of small catchment area and the" - }, - { - "category_id": 15, - "poly": [ - 119.0, - 791.0, - 715.0, - 791.0, - 715.0, - 815.0, - 119.0, - 815.0 - ], - "score": 0.97, - "text": "increased transpirativedemand that exceedssummer" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 821.0, - 714.0, - 821.0, - 714.0, - 851.0, - 118.0, - 851.0 - ], - "score": 0.99, - "text": "and autumn rainfall and stored water results in the large" - }, - { - "category_id": 15, - "poly": [ - 118.0, - 856.0, - 635.0, - 856.0, - 635.0, - 885.0, - 118.0, - 885.0 - ], - "score": 0.99, - "text": "impact on lower flows, compared to high flows." - }, - { - "category_id": 15, - "poly": [ - 1345.0, - 196.0, - 1382.0, - 196.0, - 1382.0, - 218.0, - 1345.0, - 218.0 - ], - "score": 1.0, - "text": "263" - }, - { - "category_id": 15, - "poly": [ - 784.0, - 1354.0, - 1110.0, - 1354.0, - 1110.0, - 1379.0, - 784.0, - 1379.0 - ], - "score": 0.99, - "text": "6.Summary andconclusions" - }, - { - "category_id": 15, - "poly": [ - 469.0, - 197.0, - 1028.0, - 197.0, - 1028.0, - 220.0, - 469.0, - 220.0 - ], - "score": 0.99, - "text": "P.N.J.Laneet al./JournalofHydrology310(2005)253-265" - } - ], - "page_info": { - "page_no": 10, - "height": 2064, - "width": 1512 - } - }, - { - "layout_dets": [ - { - "category_id": 1, - "poly": [ - 129.7504425048828, - 253.22445678710938, - 731.6268920898438, - 253.22445678710938, - 731.6268920898438, - 850.9736328125, - 129.7504425048828, - 850.9736328125 - ], - "score": 0.9999896287918091 - }, - { - "category_id": 1, - "poly": [ - 130.6014862060547, - 1007.985107421875, - 731.66796875, - 1007.985107421875, - 731.66796875, - 1439.5816650390625, - 130.6014862060547, - 1439.5816650390625 - ], - "score": 0.9999825954437256 - }, - { - "category_id": 1, - "poly": [ - 130.93617248535156, - 1596.6112060546875, - 731.9217529296875, - 1596.6112060546875, - 731.9217529296875, - 1846.48779296875, - 130.93617248535156, - 1846.48779296875 - ], - "score": 0.9999703168869019 - }, - { - "category_id": 2, - "poly": [ - 128.89547729492188, - 194.6790008544922, - 167.4661407470703, - 194.6790008544922, - 167.4661407470703, - 216.0607147216797, - 128.89547729492188, - 216.0607147216797 - ], - "score": 0.9999610781669617 - }, - { - "category_id": 0, - "poly": [ - 131.96646118164062, - 943.1311645507812, - 353.8561706542969, - 943.1311645507812, - 353.8561706542969, - 973.1969604492188, - 131.96646118164062, - 973.1969604492188 - ], - "score": 0.9999556541442871 - }, - { - "category_id": 1, - "poly": [ - 785.2122192382812, - 248.98667907714844, - 1401.3350830078125, - 248.98667907714844, - 1401.3350830078125, - 1848.1571044921875, - 785.2122192382812, - 1848.1571044921875 - ], - "score": 0.9999303817749023 - }, - { - "category_id": 0, - "poly": [ - 130.318115234375, - 1534.687255859375, - 256.7127685546875, - 1534.687255859375, - 256.7127685546875, - 1561.822509765625, - 130.318115234375, - 1561.822509765625 - ], - "score": 0.9999189376831055 - }, - { - "category_id": 2, - "poly": [ - 479.6887512207031, - 194.76837158203125, - 1046.6405029296875, - 194.76837158203125, - 1046.6405029296875, - 219.2889862060547, - 479.6887512207031, - 219.2889862060547 - ], - "score": 0.9995745420455933 - }, - { - "category_id": 13, - "poly": [ - 1067, - 1022, - 1120, - 1022, - 1120, - 1049, - 1067, - 1049 - ], - "score": 0.57, - "latex": "219\\,\\mathrm{p}" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 259.0, - 729.0, - 259.0, - 729.0, - 280.0, - 133.0, - 280.0 - ], - "score": 0.98, - "text": "scales,speciesandenvironments,andhaveshownthatit" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 294.0, - 728.0, - 294.0, - 728.0, - 315.0, - 132.0, - 315.0 - ], - "score": 1.0, - "text": "providesameansofseparatingtheinfluenceofclimate" - }, - { - "category_id": 15, - "poly": [ - 134.0, - 326.0, - 727.0, - 326.0, - 727.0, - 350.0, - 134.0, - 350.0 - ], - "score": 0.96, - "text": "and vegetation on the FDCs.The modelled results" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 356.0, - 729.0, - 356.0, - 729.0, - 384.0, - 131.0, - 384.0 - ], - "score": 0.97, - "text": "showed the greatest proportional impacts were for" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 393.0, - 725.0, - 393.0, - 725.0, - 413.0, - 133.0, - 413.0 - ], - "score": 0.99, - "text": "medianandlowerflows.Theflowreductionsfromthe" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 423.0, - 729.0, - 423.0, - 729.0, - 448.0, - 132.0, - 448.0 - ], - "score": 1.0, - "text": "threesmallcatchmentsSEAustralianwerethehighest" - }, - { - "category_id": 15, - "poly": [ - 134.0, - 458.0, - 731.0, - 458.0, - 731.0, - 482.0, - 134.0, - 482.0 - ], - "score": 0.99, - "text": "and may reflect lower storages. The characterisation of" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 490.0, - 729.0, - 490.0, - 729.0, - 515.0, - 131.0, - 515.0 - ], - "score": 0.99, - "text": "thenumberofzeroflowdayswas alsosuccessfulfor" - }, - { - "category_id": 15, - "poly": [ - 130.0, - 523.0, - 729.0, - 523.0, - 729.0, - 551.0, - 130.0, - 551.0 - ], - "score": 0.98, - "text": "these catchments in indicating a significant increase in" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 556.0, - 726.0, - 556.0, - 726.0, - 581.0, - 132.0, - 581.0 - ], - "score": 0.99, - "text": "zeroflows.Theflowreductionsidentified hereprobably" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 593.0, - 728.0, - 593.0, - 728.0, - 614.0, - 132.0, - 614.0 - ], - "score": 1.0, - "text": "representamaximumeffectgiventhesizeofthe" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 625.0, - 725.0, - 625.0, - 725.0, - 648.0, - 133.0, - 648.0 - ], - "score": 1.0, - "text": "catchments,levelofafforestationandtheshallowsoils" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 657.0, - 727.0, - 657.0, - 727.0, - 681.0, - 133.0, - 681.0 - ], - "score": 0.98, - "text": "These results have yielded useful new insights on the" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 691.0, - 730.0, - 691.0, - 730.0, - 714.0, - 132.0, - 714.0 - ], - "score": 1.0, - "text": "contentiousissueofthehydrologicalimpactof" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 721.0, - 728.0, - 721.0, - 728.0, - 749.0, - 133.0, - 749.0 - ], - "score": 0.97, - "text": "afforestation. This research has led to the development" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 756.0, - 729.0, - 756.0, - 729.0, - 780.0, - 132.0, - 780.0 - ], - "score": 0.98, - "text": "of a method to assess the net impact of afforestation on" - }, - { - "category_id": 15, - "poly": [ - 130.0, - 788.0, - 727.0, - 788.0, - 727.0, - 816.0, - 130.0, - 816.0 - ], - "score": 0.98, - "text": "the flow duration curve which does not require paired-" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 825.0, - 591.0, - 825.0, - 591.0, - 849.0, - 133.0, - 849.0 - ], - "score": 0.99, - "text": "catchments to remove climatic variability." - }, - { - "category_id": 15, - "poly": [ - 165.0, - 1014.0, - 726.0, - 1014.0, - 726.0, - 1038.0, - 165.0, - 1038.0 - ], - "score": 0.94, - "text": "The authors would like tothank RoryNathan." - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1048.0, - 728.0, - 1048.0, - 728.0, - 1071.0, - 132.0, - 1071.0 - ], - "score": 0.98, - "text": "Narendra Tuteja,Tom McMahon,Geoff Podger,Rob" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1079.0, - 725.0, - 1079.0, - 725.0, - 1105.0, - 133.0, - 1105.0 - ], - "score": 0.99, - "text": "Vertessy, Glen Walker and Peter Hairsine for particu-" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1111.0, - 728.0, - 1111.0, - 728.0, - 1139.0, - 131.0, - 1139.0 - ], - "score": 0.99, - "text": "larly helpful discussions on methodologies and reviews," - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1146.0, - 728.0, - 1146.0, - 728.0, - 1171.0, - 131.0, - 1171.0 - ], - "score": 0.96, - "text": "Richard Morton for valuable statistical advice,Dave" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1180.0, - 726.0, - 1180.0, - 726.0, - 1205.0, - 132.0, - 1205.0 - ], - "score": 0.97, - "text": "Scottfor supplying theSouthAfrican data,BarryFahey" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1213.0, - 728.0, - 1213.0, - 728.0, - 1237.0, - 132.0, - 1237.0 - ], - "score": 0.97, - "text": "for the New Zealand data, and Hancocks Victorian" - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1245.0, - 726.0, - 1245.0, - 726.0, - 1270.0, - 131.0, - 1270.0 - ], - "score": 0.97, - "text": "Plantationsfor vegetation data.Thestudywasfunded by" - }, - { - "category_id": 15, - "poly": [ - 133.0, - 1280.0, - 729.0, - 1280.0, - 729.0, - 1303.0, - 133.0, - 1303.0 - ], - "score": 1.0, - "text": "theVictorianDepartmentofNaturalResourcesand" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1314.0, - 729.0, - 1314.0, - 729.0, - 1337.0, - 132.0, - 1337.0 - ], - "score": 0.97, - "text": "EnvironmentPrivateForestryUnit,the CRC for" - }, - { - "category_id": 15, - "poly": [ - 130.0, - 1344.0, - 729.0, - 1344.0, - 729.0, - 1372.0, - 130.0, - 1372.0 - ], - "score": 0.99, - "text": "Catchment Hydrology, and the MDBC funded project" - }, - { - "category_id": 15, - "poly": [ - 135.0, - 1377.0, - 727.0, - 1377.0, - 727.0, - 1405.0, - 135.0, - 1405.0 - ], - "score": 0.98, - "text": "Integrated assessment of the effects of land use changes" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 1412.0, - 554.0, - 1412.0, - 554.0, - 1437.0, - 132.0, - 1437.0 - ], - "score": 0.96, - "text": "on water yield and salt loads'(D2013)." - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1602.0, - 729.0, - 1602.0, - 729.0, - 1625.0, - 131.0, - 1625.0 - ], - "score": 0.97, - "text": "Bosch, J.M.,1979. Treatment effects on annual and dry period" - }, - { - "category_id": 15, - "poly": [ - 164.0, - 1629.0, - 726.0, - 1629.0, - 726.0, - 1650.0, - 164.0, - 1650.0 - ], - "score": 0.98, - "text": "streamflow at CathedralPeak.SouthAfricanForestryJournal 108" - }, - { - "category_id": 15, - "poly": [ - 164.0, - 1656.0, - 224.0, - 1656.0, - 224.0, - 1677.0, - 164.0, - 1677.0 - ], - "score": 0.99, - "text": "29-37." - }, - { - "category_id": 15, - "poly": [ - 130.0, - 1684.0, - 729.0, - 1684.0, - 729.0, - 1706.0, - 130.0, - 1706.0 - ], - "score": 0.97, - "text": "Bosch, J.M., Von Gadow, K.,1990. Regulating afforestation for water" - }, - { - "category_id": 15, - "poly": [ - 164.0, - 1712.0, - 727.0, - 1712.0, - 727.0, - 1734.0, - 164.0, - 1734.0 - ], - "score": 0.97, - "text": "conservation inSouthAfrica.Suid-AfrikaanseBosboutydskrif 153," - }, - { - "category_id": 15, - "poly": [ - 165.0, - 1741.0, - 222.0, - 1741.0, - 222.0, - 1759.0, - 165.0, - 1759.0 - ], - "score": 0.98, - "text": "41-54." - }, - { - "category_id": 15, - "poly": [ - 131.0, - 1768.0, - 730.0, - 1768.0, - 730.0, - 1790.0, - 131.0, - 1790.0 - ], - "score": 0.98, - "text": "Chiew,F.H.S.,McMahon, T.A.,1993.Assessing the adequacy of" - }, - { - "category_id": 15, - "poly": [ - 165.0, - 1796.0, - 729.0, - 1796.0, - 729.0, - 1815.0, - 165.0, - 1815.0 - ], - "score": 1.0, - "text": "catchmentstreamflowyieldestimates.AustralianJournalofSoil" - }, - { - "category_id": 15, - "poly": [ - 165.0, - 1823.0, - 360.0, - 1823.0, - 360.0, - 1843.0, - 165.0, - 1843.0 - ], - "score": 0.99, - "text": "Research31,665-680." - }, - { - "category_id": 15, - "poly": [ - 129.0, - 195.0, - 167.0, - 195.0, - 167.0, - 218.0, - 129.0, - 218.0 - ], - "score": 1.0, - "text": "264" - }, - { - "category_id": 15, - "poly": [ - 132.0, - 945.0, - 352.0, - 945.0, - 352.0, - 972.0, - 132.0, - 972.0 - ], - "score": 1.0, - "text": "Acknowledgements" - }, - { - "category_id": 15, - "poly": [ - 792.0, - 253.0, - 1396.0, - 253.0, - 1396.0, - 285.0, - 792.0, - 285.0 - ], - "score": 0.98, - "text": "Cornish, P.M., Vertessy, R.A., 2001. Forest age-induced changes in" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 287.0, - 1396.0, - 287.0, - 1396.0, - 311.0, - 828.0, - 311.0 - ], - "score": 0.99, - "text": "evapotranspiration and water yield in a eucalypt forest. Journal of" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 315.0, - 1029.0, - 315.0, - 1029.0, - 340.0, - 828.0, - 340.0 - ], - "score": 0.99, - "text": "Hydrology 242,43-63." - }, - { - "category_id": 15, - "poly": [ - 794.0, - 341.0, - 1393.0, - 341.0, - 1393.0, - 368.0, - 794.0, - 368.0 - ], - "score": 0.98, - "text": "Fahey, B., Jackson, R., 1997. Hydrological impacts of converting" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 373.0, - 1394.0, - 373.0, - 1394.0, - 396.0, - 828.0, - 396.0 - ], - "score": 0.95, - "text": "native forests and grasslands to pine plantations, South" - }, - { - "category_id": 15, - "poly": [ - 825.0, - 394.0, - 1396.0, - 394.0, - 1396.0, - 428.0, - 825.0, - 428.0 - ], - "score": 0.97, - "text": "Island, New Zealand. Agricultural and Forest Meteorology 84," - }, - { - "category_id": 15, - "poly": [ - 826.0, - 428.0, - 888.0, - 428.0, - 888.0, - 453.0, - 826.0, - 453.0 - ], - "score": 1.0, - "text": "69-82." - }, - { - "category_id": 15, - "poly": [ - 795.0, - 455.0, - 1392.0, - 455.0, - 1392.0, - 480.0, - 795.0, - 480.0 - ], - "score": 0.98, - "text": "Hickel, K., 2001. The effect of pine afforestation on flow regime in" - }, - { - "category_id": 15, - "poly": [ - 823.0, - 481.0, - 1394.0, - 481.0, - 1394.0, - 513.0, - 823.0, - 513.0 - ], - "score": 0.99, - "text": " small upland catchments. Masters Thesis, University of Stuttgart," - }, - { - "category_id": 15, - "poly": [ - 822.0, - 514.0, - 889.0, - 514.0, - 889.0, - 536.0, - 822.0, - 536.0 - ], - "score": 1.0, - "text": "p.134." - }, - { - "category_id": 15, - "poly": [ - 794.0, - 542.0, - 1394.0, - 542.0, - 1394.0, - 566.0, - 794.0, - 566.0 - ], - "score": 0.98, - "text": "Holmes, J.W., Sinclair, J.A., 1986. Water yield from some afforested" - }, - { - "category_id": 15, - "poly": [ - 830.0, - 572.0, - 1394.0, - 572.0, - 1394.0, - 596.0, - 830.0, - 596.0 - ], - "score": 0.95, - "text": "catchments in Victoria. In Hydrology and Water Resources" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 600.0, - 1392.0, - 600.0, - 1392.0, - 625.0, - 828.0, - 625.0 - ], - "score": 0.99, - "text": "Symposium, Griffith University, Brisbane 25-27 November 1986," - }, - { - "category_id": 15, - "poly": [ - 824.0, - 629.0, - 937.0, - 629.0, - 937.0, - 649.0, - 824.0, - 649.0 - ], - "score": 0.96, - "text": "pp.214-218" - }, - { - "category_id": 15, - "poly": [ - 795.0, - 655.0, - 1394.0, - 655.0, - 1394.0, - 680.0, - 795.0, - 680.0 - ], - "score": 0.98, - "text": "Lane, P.N.J., Best, A.E., Hickel, K., Zhang, L., 2003. The effect" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 685.0, - 1392.0, - 685.0, - 1392.0, - 710.0, - 828.0, - 710.0 - ], - "score": 0.99, - "text": "of afforestation on flow duration curves. Cooperative Research" - }, - { - "category_id": 15, - "poly": [ - 826.0, - 712.0, - 1394.0, - 712.0, - 1394.0, - 742.0, - 826.0, - 742.0 - ], - "score": 0.96, - "text": "Centre for Catchment Hydrology Technical Report 0O3/13," - }, - { - "category_id": 15, - "poly": [ - 822.0, - 742.0, - 883.0, - 742.0, - 883.0, - 764.0, - 822.0, - 764.0 - ], - "score": 0.98, - "text": "p.25." - }, - { - "category_id": 15, - "poly": [ - 792.0, - 770.0, - 1391.0, - 770.0, - 1391.0, - 793.0, - 792.0, - 793.0 - ], - "score": 0.97, - "text": "Legates, D.R., McCabe, G.J., 1999. Evaluating the use of ^goodness-" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 798.0, - 1392.0, - 798.0, - 1392.0, - 823.0, - 828.0, - 823.0 - ], - "score": 0.97, - "text": "of-fit’ measures in hydrologic and hydroclimatic model validation." - }, - { - "category_id": 15, - "poly": [ - 828.0, - 827.0, - 1179.0, - 827.0, - 1179.0, - 850.0, - 828.0, - 850.0 - ], - "score": 0.98, - "text": "Water Resources Research 35,233-241." - }, - { - "category_id": 15, - "poly": [ - 792.0, - 851.0, - 1396.0, - 851.0, - 1396.0, - 880.0, - 792.0, - 880.0 - ], - "score": 1.0, - "text": "Lyne, V.D., Hollick, M., 1979. Stochastic time-varying rainfall-runoff" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 883.0, - 1392.0, - 883.0, - 1392.0, - 908.0, - 828.0, - 908.0 - ], - "score": 0.98, - "text": "modelling. Hydrology and Water Resources Symposium, Perth." - }, - { - "category_id": 15, - "poly": [ - 828.0, - 912.0, - 1220.0, - 912.0, - 1220.0, - 936.0, - 828.0, - 936.0 - ], - "score": 0.99, - "text": "Institution of Engineers, Australia, pp. 89-92." - }, - { - "category_id": 15, - "poly": [ - 794.0, - 940.0, - 1392.0, - 940.0, - 1392.0, - 965.0, - 794.0, - 965.0 - ], - "score": 0.98, - "text": "Nandakumar, N., Mein, R.G., 1993. Analysis of paired catchment data" - }, - { - "category_id": 15, - "poly": [ - 825.0, - 965.0, - 1396.0, - 965.0, - 1396.0, - 997.0, - 825.0, - 997.0 - ], - "score": 0.98, - "text": "to determine the hydrologic effects of changes in vegetative cover" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 998.0, - 1394.0, - 998.0, - 1394.0, - 1023.0, - 828.0, - 1023.0 - ], - "score": 0.99, - "text": "on yield. Technical Report for Project UM010, Monash University" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 1027.0, - 1066.0, - 1027.0, - 1066.0, - 1052.0, - 828.0, - 1052.0 - ], - "score": 0.97, - "text": "Dept. of Civil Engineering," - }, - { - "category_id": 15, - "poly": [ - 792.0, - 1050.0, - 1396.0, - 1050.0, - 1396.0, - 1082.0, - 792.0, - 1082.0 - ], - "score": 0.99, - "text": "Nash, J.E., Sutcliffe, J.V., 1970. River flow forecasting through" - }, - { - "category_id": 15, - "poly": [ - 826.0, - 1080.0, - 1398.0, - 1080.0, - 1398.0, - 1110.0, - 826.0, - 1110.0 - ], - "score": 0.99, - "text": "conceptual models, I, A discussion of principals. Journal of" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 1112.0, - 1041.0, - 1112.0, - 1041.0, - 1137.0, - 828.0, - 1137.0 - ], - "score": 0.98, - "text": "Hydrology 10, 282-290." - }, - { - "category_id": 15, - "poly": [ - 794.0, - 1137.0, - 1398.0, - 1137.0, - 1398.0, - 1167.0, - 794.0, - 1167.0 - ], - "score": 0.99, - "text": "Putahena, W.M., Cordery, I., 2000. Some hydrological effects of" - }, - { - "category_id": 15, - "poly": [ - 826.0, - 1167.0, - 1396.0, - 1167.0, - 1396.0, - 1197.0, - 826.0, - 1197.0 - ], - "score": 0.99, - "text": "changing forest cover from eucalyptus to Pinus radiata. Agricul-" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 1197.0, - 1188.0, - 1197.0, - 1188.0, - 1222.0, - 828.0, - 1222.0 - ], - "score": 0.99, - "text": "tural and Forest Meteorology 100, 59-72." - }, - { - "category_id": 15, - "poly": [ - 792.0, - 1223.0, - 1396.0, - 1223.0, - 1396.0, - 1253.0, - 792.0, - 1253.0 - ], - "score": 0.98, - "text": "Roberts, S., Vertessy, R.A., Grayson, R.G., 2001. Transpiration from" - }, - { - "category_id": 15, - "poly": [ - 825.0, - 1250.0, - 1396.0, - 1250.0, - 1396.0, - 1282.0, - 825.0, - 1282.0 - ], - "score": 0.99, - "text": "Eucalyptus sieberi (L. Johnson) forests of different age. Forest" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 1280.0, - 1184.0, - 1280.0, - 1184.0, - 1310.0, - 828.0, - 1310.0 - ], - "score": 0.98, - "text": "Ecology and Management 143, 153-161." - }, - { - "category_id": 15, - "poly": [ - 792.0, - 1307.0, - 1396.0, - 1307.0, - 1396.0, - 1338.0, - 792.0, - 1338.0 - ], - "score": 0.99, - "text": "Scott, D.F., Smith, R.E., 1997. Preliminary empirical models to predict" - }, - { - "category_id": 15, - "poly": [ - 825.0, - 1335.0, - 1394.0, - 1335.0, - 1394.0, - 1367.0, - 825.0, - 1367.0 - ], - "score": 0.99, - "text": "reductions in total and low flows resulting from afforestation." - }, - { - "category_id": 15, - "poly": [ - 826.0, - 1365.0, - 1045.0, - 1365.0, - 1045.0, - 1392.0, - 826.0, - 1392.0 - ], - "score": 0.96, - "text": "Water S.A. 23, 135-140." - }, - { - "category_id": 15, - "poly": [ - 795.0, - 1393.0, - 1391.0, - 1393.0, - 1391.0, - 1418.0, - 795.0, - 1418.0 - ], - "score": 0.93, - "text": "Scott, D.F., Prinsloo, F.W., Moses, G., Mehlomakulu, M.," - }, - { - "category_id": 15, - "poly": [ - 826.0, - 1423.0, - 1392.0, - 1423.0, - 1392.0, - 1448.0, - 826.0, - 1448.0 - ], - "score": 0.95, - "text": "Simmers, A.D.A., 2000. Area-analysis of the South African" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 1452.0, - 1392.0, - 1452.0, - 1392.0, - 1477.0, - 828.0, - 1477.0 - ], - "score": 0.96, - "text": "catchment afforestation experimental data. WRC Report" - }, - { - "category_id": 15, - "poly": [ - 827.0, - 1478.0, - 954.0, - 1478.0, - 954.0, - 1507.0, - 827.0, - 1507.0 - ], - "score": 0.99, - "text": "No. 810/1/00." - }, - { - "category_id": 15, - "poly": [ - 792.0, - 1505.0, - 1396.0, - 1505.0, - 1396.0, - 1537.0, - 792.0, - 1537.0 - ], - "score": 0.99, - "text": "Sikka, A.K., Samra, J.S., Sharda, V.N., Samraj, P., Lakshmanan, V.," - }, - { - "category_id": 15, - "poly": [ - 826.0, - 1537.0, - 1394.0, - 1537.0, - 1394.0, - 1563.0, - 826.0, - 1563.0 - ], - "score": 0.99, - "text": "2003. Low fow and high responses to converting natural grassland" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 1567.0, - 1396.0, - 1567.0, - 1396.0, - 1592.0, - 828.0, - 1592.0 - ], - "score": 0.98, - "text": "into bluegum (Eucalyptus globulus) in Ningiris watersheds of" - }, - { - "category_id": 15, - "poly": [ - 825.0, - 1590.0, - 1234.0, - 1590.0, - 1234.0, - 1622.0, - 825.0, - 1622.0 - ], - "score": 0.99, - "text": "South India. Journal of Hydrology 270, 12-26." - }, - { - "category_id": 15, - "poly": [ - 795.0, - 1624.0, - 1392.0, - 1624.0, - 1392.0, - 1648.0, - 795.0, - 1648.0 - ], - "score": 0.99, - "text": "Smakhtin, V.U., 1999. A concept of pragmatic hydrological time series" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 1652.0, - 1394.0, - 1652.0, - 1394.0, - 1677.0, - 828.0, - 1677.0 - ], - "score": 0.99, - "text": "modelling and its application in South African context. In Ninth" - }, - { - "category_id": 15, - "poly": [ - 825.0, - 1677.0, - 1396.0, - 1677.0, - 1396.0, - 1709.0, - 825.0, - 1709.0 - ], - "score": 0.97, - "text": "South African National Hydrology Symposium, 29-30 November" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 1707.0, - 966.0, - 1707.0, - 966.0, - 1737.0, - 828.0, - 1737.0 - ], - "score": 1.0, - "text": "1999, pp. 1-11." - }, - { - "category_id": 15, - "poly": [ - 792.0, - 1733.0, - 1398.0, - 1733.0, - 1398.0, - 1765.0, - 792.0, - 1765.0 - ], - "score": 0.99, - "text": "Smakhtin, V.U., 2001. Low flow hydrology: a review. Journal of" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 1765.0, - 1050.0, - 1765.0, - 1050.0, - 1790.0, - 828.0, - 1790.0 - ], - "score": 0.98, - "text": "Hydrology 240, 147-186." - }, - { - "category_id": 15, - "poly": [ - 794.0, - 1790.0, - 1396.0, - 1790.0, - 1396.0, - 1822.0, - 794.0, - 1822.0 - ], - "score": 0.98, - "text": "Van Lill, W.S., Kruger, F.J., Van Wyk, D.B., 1980. The effect of" - }, - { - "category_id": 15, - "poly": [ - 828.0, - 1824.0, - 1394.0, - 1824.0, - 1394.0, - 1848.0, - 828.0, - 1848.0 - ], - "score": 0.98, - "text": "afforestation with Eucalyptus grandis Hill ex Maiden and Pinus" - }, - { - "category_id": 15, - "poly": [ - 130.0, - 1533.0, - 257.0, - 1533.0, - 257.0, - 1561.0, - 130.0, - 1561.0 - ], - "score": 1.0, - "text": "References" - }, - { - "category_id": 15, - "poly": [ - 482.0, - 196.0, - 1041.0, - 196.0, - 1041.0, - 220.0, - 482.0, - 220.0 - ], - "score": 0.97, - "text": "P.N.J.Lane et al./ Journal ofHydrology 310(2005)253-265" - } - ], - "page_info": { - "page_no": 11, - "height": 2064, - "width": 1512 - } - }, - { - "layout_dets": [ - { - "category_id": 1, - "poly": [ - 775.5120849609375, - 251.32174682617188, - 1385.47265625, - 251.32174682617188, - 1385.47265625, - 615.240478515625, - 775.5120849609375, - 615.240478515625 - ], - "score": 0.9999982714653015 - }, - { - "category_id": 1, - "poly": [ - 116.47637939453125, - 255.4496612548828, - 719.7019653320312, - 255.4496612548828, - 719.7019653320312, - 616.0682373046875, - 116.47637939453125, - 616.0682373046875 - ], - "score": 0.9999979734420776 - }, - { - "category_id": 2, - "poly": [ - 1346.1534423828125, - 194.16160583496094, - 1382.1688232421875, - 194.16160583496094, - 1382.1688232421875, - 217.01524353027344, - 1346.1534423828125, - 217.01524353027344 - ], - "score": 0.9999814033508301 - }, - { - "category_id": 2, - "poly": [ - 465.8272705078125, - 194.28224182128906, - 1032.5506591796875, - 194.28224182128906, - 1032.5506591796875, - 220.2495880126953, - 465.8272705078125, - 220.2495880126953 - ], - "score": 0.9999077320098877 - }, - { - "category_id": 15, - "poly": [ - 785.0, - 257.0, - 1379.0, - 257.0, - 1379.0, - 280.0, - 785.0, - 280.0 - ], - "score": 0.97, - "text": "Vogel, R.M.,Fennessey, N.M., 1994. Flow duration curves. 1. New" - }, - { - "category_id": 15, - "poly": [ - 815.0, - 284.0, - 1381.0, - 284.0, - 1381.0, - 309.0, - 815.0, - 309.0 - ], - "score": 0.97, - "text": "interpretation and confidence intervals. Journal of Water Planning" - }, - { - "category_id": 15, - "poly": [ - 816.0, - 312.0, - 1123.0, - 312.0, - 1123.0, - 335.0, - 816.0, - 335.0 - ], - "score": 0.96, - "text": "and Management 120 (4),485-504." - }, - { - "category_id": 15, - "poly": [ - 782.0, - 339.0, - 1383.0, - 339.0, - 1383.0, - 366.0, - 782.0, - 366.0 - ], - "score": 0.97, - "text": "Whitehead, D., Beadle C.L., 2004. Physiological regulation of" - }, - { - "category_id": 15, - "poly": [ - 815.0, - 368.0, - 1379.0, - 368.0, - 1379.0, - 394.0, - 815.0, - 394.0 - ], - "score": 1.0, - "text": "productivity and water use in Eucalyptus: a review. Forest Ecology" - }, - { - "category_id": 15, - "poly": [ - 815.0, - 396.0, - 1098.0, - 396.0, - 1098.0, - 420.0, - 815.0, - 420.0 - ], - "score": 0.99, - "text": "and Management, 193, 113-140." - }, - { - "category_id": 15, - "poly": [ - 785.0, - 425.0, - 1382.0, - 425.0, - 1382.0, - 445.0, - 785.0, - 445.0 - ], - "score": 0.97, - "text": "Zhang,L.,Dawes,W.R.,Walker,G.R.,1999.Predicting the effect of" - }, - { - "category_id": 15, - "poly": [ - 817.0, - 454.0, - 1378.0, - 454.0, - 1378.0, - 474.0, - 817.0, - 474.0 - ], - "score": 1.0, - "text": "vegetationchangesoncatchmentaveragewaterbalance.Coop-" - }, - { - "category_id": 15, - "poly": [ - 814.0, - 479.0, - 1380.0, - 479.0, - 1380.0, - 501.0, - 814.0, - 501.0 - ], - "score": 0.97, - "text": "erative ResearchCentre for Catchment HydrologyTechnical" - }, - { - "category_id": 15, - "poly": [ - 816.0, - 508.0, - 988.0, - 508.0, - 988.0, - 529.0, - 816.0, - 529.0 - ], - "score": 0.99, - "text": "Report99/12,p.35." - }, - { - "category_id": 15, - "poly": [ - 783.0, - 533.0, - 1381.0, - 533.0, - 1381.0, - 558.0, - 783.0, - 558.0 - ], - "score": 0.97, - "text": "Zhang, L., Dawes, W.R.,Walker, G.R.,2001.Response of mean" - }, - { - "category_id": 15, - "poly": [ - 815.0, - 562.0, - 1382.0, - 562.0, - 1382.0, - 586.0, - 815.0, - 586.0 - ], - "score": 0.98, - "text": "annual evapotranspiration to vegetation changes at catchment" - }, - { - "category_id": 15, - "poly": [ - 815.0, - 590.0, - 1217.0, - 590.0, - 1217.0, - 610.0, - 815.0, - 610.0 - ], - "score": 0.99, - "text": "scale.WaterResourcesResearch37,701-708." - }, - { - "category_id": 15, - "poly": [ - 149.0, - 257.0, - 715.0, - 257.0, - 715.0, - 280.0, - 149.0, - 280.0 - ], - "score": 0.97, - "text": "patula Schlect.et Cham.on streamflow fromexperimental" - }, - { - "category_id": 15, - "poly": [ - 151.0, - 284.0, - 712.0, - 284.0, - 712.0, - 307.0, - 151.0, - 307.0 - ], - "score": 0.98, - "text": "catchments at Mokubulaan, Transvaal. Journal of Hydrology 48" - }, - { - "category_id": 15, - "poly": [ - 153.0, - 314.0, - 230.0, - 314.0, - 230.0, - 333.0, - 153.0, - 333.0 - ], - "score": 1.0, - "text": "107-118." - }, - { - "category_id": 15, - "poly": [ - 117.0, - 339.0, - 717.0, - 339.0, - 717.0, - 363.0, - 117.0, - 363.0 - ], - "score": 0.98, - "text": "Van Wyk, D.B.,1987. Some effects of afforestation on streamflow" - }, - { - "category_id": 15, - "poly": [ - 149.0, - 368.0, - 715.0, - 368.0, - 715.0, - 391.0, - 149.0, - 391.0 - ], - "score": 0.97, - "text": "in the Western Cape Province, South Africa.Water S.A. 13," - }, - { - "category_id": 15, - "poly": [ - 149.0, - 395.0, - 210.0, - 395.0, - 210.0, - 417.0, - 149.0, - 417.0 - ], - "score": 1.0, - "text": "31-36." - }, - { - "category_id": 15, - "poly": [ - 117.0, - 422.0, - 715.0, - 422.0, - 715.0, - 449.0, - 117.0, - 449.0 - ], - "score": 0.96, - "text": "Vertessy, R.A., Bessard, Y., 1999. Anticipating the negative" - }, - { - "category_id": 15, - "poly": [ - 151.0, - 452.0, - 717.0, - 452.0, - 717.0, - 476.0, - 151.0, - 476.0 - ], - "score": 0.97, - "text": "hydrologic effects of plantation expansion: results from a" - }, - { - "category_id": 15, - "poly": [ - 149.0, - 477.0, - 716.0, - 477.0, - 716.0, - 503.0, - 149.0, - 503.0 - ], - "score": 1.0, - "text": "GIS-based analysis on the Murrumbidgee Basin, in: Croke, J.," - }, - { - "category_id": 15, - "poly": [ - 149.0, - 507.0, - 717.0, - 507.0, - 717.0, - 530.0, - 149.0, - 530.0 - ], - "score": 0.99, - "text": "Lane, P.N.J. (Eds.), Forest Management for Water Quality and" - }, - { - "category_id": 15, - "poly": [ - 152.0, - 534.0, - 716.0, - 534.0, - 716.0, - 558.0, - 152.0, - 558.0 - ], - "score": 0.99, - "text": "Quantity: Proceedings of the 2nd Erosion in Forests Meeting" - }, - { - "category_id": 15, - "poly": [ - 151.0, - 563.0, - 716.0, - 563.0, - 716.0, - 584.0, - 151.0, - 584.0 - ], - "score": 0.98, - "text": "CooperativeResearchCentre for Catchment Hydrology,Report" - }, - { - "category_id": 15, - "poly": [ - 149.0, - 588.0, - 299.0, - 588.0, - 299.0, - 615.0, - 149.0, - 615.0 - ], - "score": 0.97, - "text": "99/6,Pp.69-73." - }, - { - "category_id": 15, - "poly": [ - 1345.0, - 196.0, - 1382.0, - 196.0, - 1382.0, - 219.0, - 1345.0, - 219.0 - ], - "score": 1.0, - "text": "265" - }, - { - "category_id": 15, - "poly": [ - 470.0, - 197.0, - 1026.0, - 197.0, - 1026.0, - 220.0, - 470.0, - 220.0 - ], - "score": 0.98, - "text": "P.N.J.Laneet al./JournalofHydrology310(2005)253-265" - } - ], - "page_info": { - "page_no": 12, - "height": 2064, - "width": 1512 - } - } -] diff --git a/tests/unittest/test_model/assets/test_02.pdf b/tests/unittest/test_model/assets/test_02.pdf deleted file mode 100644 index c9405d62..00000000 Binary files a/tests/unittest/test_model/assets/test_02.pdf and /dev/null differ diff --git a/tests/unittest/test_model/test_magic_model.py b/tests/unittest/test_model/test_magic_model.py deleted file mode 100644 index 96af617f..00000000 --- a/tests/unittest/test_model/test_magic_model.py +++ /dev/null @@ -1,31 +0,0 @@ -import json - -from magic_pdf.data.read_api import read_local_pdfs -from magic_pdf.model.magic_model import MagicModel - - -def test_magic_model_image_v2(): - datasets = read_local_pdfs('tests/unittest/test_model/assets/test_01.pdf') - with open('tests/unittest/test_model/assets/test_01.model.json') as f: - model_json = json.load(f) - - magic_model = MagicModel(model_json, datasets[0]) - - imgs = magic_model.get_imgs_v2(0) - print(imgs) - - tables = magic_model.get_tables_v2(0) - print(tables) - - -def test_magic_model_table_v2(): - datasets = read_local_pdfs('tests/unittest/test_model/assets/test_02.pdf') - with open('tests/unittest/test_model/assets/test_02.model.json') as f: - model_json = json.load(f) - - magic_model = MagicModel(model_json, datasets[0]) - tables = magic_model.get_tables_v2(5) - print(tables) - - tables = magic_model.get_tables_v2(8) - print(tables) diff --git a/tests/unittest/test_table/assets/table.jpg b/tests/unittest/test_table/assets/table.jpg deleted file mode 100644 index 95fdf84d..00000000 Binary files a/tests/unittest/test_table/assets/table.jpg and /dev/null differ diff --git a/tests/unittest/test_table/test_rapidtable.py b/tests/unittest/test_table/test_rapidtable.py deleted file mode 100644 index 8ad15977..00000000 --- a/tests/unittest/test_table/test_rapidtable.py +++ /dev/null @@ -1,61 +0,0 @@ -import unittest -import os -from PIL import Image -from lxml import etree - -from magic_pdf.model.sub_modules.model_init import AtomModelSingleton -from magic_pdf.model.sub_modules.table.rapidtable.rapid_table import RapidTableModel - - -class TestppTableModel(unittest.TestCase): - def test_image2html(self): - img = Image.open(os.path.join(os.path.dirname(__file__), "assets/table.jpg")) - atom_model_manager = AtomModelSingleton() - ocr_engine = atom_model_manager.get_atom_model( - atom_model_name='ocr', - ocr_show_log=False, - det_db_box_thresh=0.5, - det_db_unclip_ratio=1.6, - lang='ch' - ) - table_model = RapidTableModel(ocr_engine, 'slanet_plus') - html_code, table_cell_bboxes, logic_points, elapse = table_model.predict(img) - # 验证生成的 HTML 是否符合预期 - parser = etree.HTMLParser() - tree = etree.fromstring(html_code, parser) - - # 检查 HTML 结构 - assert tree.find('.//table') is not None, "HTML should contain a element" - assert tree.find('.//tr') is not None, "HTML should contain a element" - assert tree.find('.//td') is not None, "HTML should contain a
element" - - # 检查具体的表格内容 - headers = tree.xpath('//table/tr[1]/td') - assert len(headers) == 5, "Thead should have 5 columns" - assert headers[0].text and headers[0].text.strip() == "Methods", "First header should be 'Methods'" - assert headers[1].text and headers[1].text.strip() == "R", "Second header should be 'R'" - assert headers[2].text and headers[2].text.strip() == "P", "Third header should be 'P'" - assert headers[3].text and headers[3].text.strip() == "F", "Fourth header should be 'F'" - assert headers[4].text and headers[4].text.strip() == "FPS", "Fifth header should be 'FPS'" - - # 检查第一行数据 - first_row = tree.xpath('//table/tr[2]/td') - assert len(first_row) == 5, "First row should have 5 cells" - assert first_row[0].text and 'SegLink' in first_row[0].text.strip(), "First cell should be 'SegLink [26]'" - assert first_row[1].text and first_row[1].text.strip() == "70.0", "Second cell should be '70.0'" - assert first_row[2].text and first_row[2].text.strip() == "86.0", "Third cell should be '86.0'" - assert first_row[3].text and first_row[3].text.strip() == "77.0", "Fourth cell should be '77.0'" - assert first_row[4].text and first_row[4].text.strip() == "8.9", "Fifth cell should be '8.9'" - - # 检查倒数第二行数据 - second_last_row = tree.xpath('//table/tr[position()=last()-1]/td') - assert len(second_last_row) == 5, "second_last_row should have 5 cells" - assert second_last_row[0].text and second_last_row[0].text.strip() == "Ours (SynText)", "First cell should be 'Ours (SynText)'" - assert second_last_row[1].text and second_last_row[1].text.strip() == "80.68", "Second cell should be '80.68'" - assert second_last_row[2].text and second_last_row[2].text.strip() == "85.40", "Third cell should be '85.40'" - # assert second_last_row[3].text and second_last_row[3].text.strip() == "82.97", "Fourth cell should be '82.97'" - # assert second_last_row[3].text and second_last_row[4].text.strip() == "12.68", "Fifth cell should be '12.68'" - - -if __name__ == "__main__": - unittest.main() diff --git a/tests/unittest/test_tools/__init__.py b/tests/unittest/test_tools/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/unittest/test_tools/assets/cli/path/cli_test_01.pdf b/tests/unittest/test_tools/assets/cli/path/cli_test_01.pdf deleted file mode 100644 index 229be9ce..00000000 Binary files a/tests/unittest/test_tools/assets/cli/path/cli_test_01.pdf and /dev/null differ diff --git a/tests/unittest/test_tools/assets/cli/path/cli_test_02.pdf b/tests/unittest/test_tools/assets/cli/path/cli_test_02.pdf deleted file mode 100644 index 1adcc01c..00000000 Binary files a/tests/unittest/test_tools/assets/cli/path/cli_test_02.pdf and /dev/null differ diff --git a/tests/unittest/test_tools/assets/cli/pdf/cli_test_01.pdf b/tests/unittest/test_tools/assets/cli/pdf/cli_test_01.pdf deleted file mode 100644 index 229be9ce..00000000 Binary files a/tests/unittest/test_tools/assets/cli/pdf/cli_test_01.pdf and /dev/null differ diff --git a/tests/unittest/test_tools/assets/cli_dev/cli_test_01.jsonl b/tests/unittest/test_tools/assets/cli_dev/cli_test_01.jsonl deleted file mode 100644 index 9bcbbe88..00000000 --- a/tests/unittest/test_tools/assets/cli_dev/cli_test_01.jsonl +++ /dev/null @@ -1 +0,0 @@ -{"file_location":"tests/unittest/test_tools/assets/cli_dev/cli_test_01.pdf","doc_layout_result":[{"layout_dets":[{"category_id":1,"poly":[882.4013061523438,169.93817138671875,1552.350341796875,169.93817138671875,1552.350341796875,625.8263549804688,882.4013061523438,625.8263549804688],"score":0.999992311000824},{"category_id":1,"poly":[882.474853515625,1450.92822265625,1551.4490966796875,1450.92822265625,1551.4490966796875,1877.5712890625,882.474853515625,1877.5712890625],"score":0.9999903440475464},{"category_id":1,"poly":[881.6513061523438,626.2058715820312,1552.1400146484375,626.2058715820312,1552.1400146484375,1450.604736328125,881.6513061523438,1450.604736328125],"score":0.9999856352806091},{"category_id":1,"poly":[149.41075134277344,232.1595001220703,819.0465087890625,232.1595001220703,819.0465087890625,625.8865356445312,149.41075134277344,625.8865356445312],"score":0.99998539686203},{"category_id":1,"poly":[149.3945770263672,1215.5172119140625,817.8850708007812,1215.5172119140625,817.8850708007812,1304.873291015625,149.3945770263672,1304.873291015625],"score":0.9999765157699585},{"category_id":1,"poly":[882.6979370117188,1880.13916015625,1552.15185546875,1880.13916015625,1552.15185546875,2031.339599609375,882.6979370117188,2031.339599609375],"score":0.9999744892120361},{"category_id":1,"poly":[148.96054077148438,743.3055419921875,818.6231689453125,743.3055419921875,818.6231689453125,1074.2369384765625,148.96054077148438,1074.2369384765625],"score":0.9999669790267944},{"category_id":1,"poly":[148.8435516357422,1791.14306640625,818.6885375976562,1791.14306640625,818.6885375976562,2030.794189453125,148.8435516357422,2030.794189453125],"score":0.9999618530273438},{"category_id":0,"poly":[150.7009735107422,684.0087890625,623.5106201171875,684.0087890625,623.5106201171875,717.03662109375,150.7009735107422,717.03662109375],"score":0.9999415278434753},{"category_id":8,"poly":[146.48068237304688,1331.6737060546875,317.2640075683594,1331.6737060546875,317.2640075683594,1400.1722412109375,146.48068237304688,1400.1722412109375],"score":0.9998958110809326},{"category_id":1,"poly":[149.42420959472656,1430.8782958984375,818.9042358398438,1430.8782958984375,818.9042358398438,1672.7386474609375,149.42420959472656,1672.7386474609375],"score":0.9998599290847778},{"category_id":1,"poly":[149.18746948242188,172.10252380371094,818.5662231445312,172.10252380371094,818.5662231445312,230.4594268798828,149.18746948242188,230.4594268798828],"score":0.9997718334197998},{"category_id":0,"poly":[149.0175018310547,1732.1090087890625,702.1005859375,1732.1090087890625,702.1005859375,1763.6046142578125,149.0175018310547,1763.6046142578125],"score":0.9997085928916931},{"category_id":2,"poly":[1519.802490234375,98.59099578857422,1551.985107421875,98.59099578857422,1551.985107421875,119.48420715332031,1519.802490234375,119.48420715332031],"score":0.9995552897453308},{"category_id":8,"poly":[146.9109649658203,1100.156494140625,544.2803344726562,1100.156494140625,544.2803344726562,1184.929443359375,146.9109649658203,1184.929443359375],"score":0.9995207786560059},{"category_id":2,"poly":[148.11611938476562,99.87767791748047,318.926025390625,99.87767791748047,318.926025390625,120.70393371582031,148.11611938476562,120.70393371582031],"score":0.999351441860199},{"category_id":9,"poly":[791.7642211914062,1130.056396484375,818.6940307617188,1130.056396484375,818.6940307617188,1161.1080322265625,791.7642211914062,1161.1080322265625],"score":0.9908884763717651},{"category_id":9,"poly":[788.37060546875,1346.8450927734375,818.5010986328125,1346.8450927734375,818.5010986328125,1377.370361328125,788.37060546875,1377.370361328125],"score":0.9873985052108765},{"category_id":14,"poly":[146,1103,543,1103,543,1184,146,1184],"score":0.94,"latex":"E\\!\\left(W\\right)\\!=\\!\\frac{E\\!\\left[H^{2}\\right]}{2E\\!\\left[H\\right]}\\!=\\!\\frac{E\\!\\left[H\\right]}{2}\\!\\!\\left(1\\!+\\!\\operatorname{CV}\\!\\left(H\\right)^{2}\\right)"},{"category_id":13,"poly":[1196,354,1278,354,1278,384,1196,384],"score":0.91,"latex":"p(1-q)"},{"category_id":13,"poly":[881,415,1020,415,1020,444,881,444],"score":0.91,"latex":"(1-p)(1-q)"},{"category_id":14,"poly":[147,1333,318,1333,318,1400,147,1400],"score":0.91,"latex":"\\mathrm{CV}\\big(H\\big)\\!=\\!\\frac{\\sigma_{_H}}{E\\big[H\\big]}"},{"category_id":13,"poly":[1197,657,1263,657,1263,686,1197,686],"score":0.9,"latex":"(1-p)"},{"category_id":13,"poly":[213,1217,263,1217,263,1244,213,1244],"score":0.88,"latex":"E[X]"},{"category_id":13,"poly":[214,1434,245,1434,245,1459,214,1459],"score":0.87,"latex":"\\upsigma_{H}"},{"category_id":13,"poly":[324,2002,373,2002,373,2028,324,2028],"score":0.84,"latex":"30\\%"},{"category_id":13,"poly":[1209,693,1225,693,1225,717,1209,717],"score":0.83,"latex":"p"},{"category_id":13,"poly":[990,449,1007,449,1007,474,990,474],"score":0.81,"latex":"p"},{"category_id":13,"poly":[346,1277,369,1277,369,1301,346,1301],"score":0.81,"latex":"H"},{"category_id":13,"poly":[1137,661,1154,661,1154,686,1137,686],"score":0.81,"latex":"p"},{"category_id":13,"poly":[522,1432,579,1432,579,1459,522,1459],"score":0.81,"latex":"H\\left(4\\right)"},{"category_id":13,"poly":[944,540,962,540,962,565,944,565],"score":0.8,"latex":"p"},{"category_id":13,"poly":[1444,936,1461,936,1461,961,1444,961],"score":0.79,"latex":"p"},{"category_id":13,"poly":[602,1247,624,1247,624,1270,602,1270],"score":0.78,"latex":"H"},{"category_id":13,"poly":[147,1247,167,1247,167,1271,147,1271],"score":0.77,"latex":"X"},{"category_id":13,"poly":[210,1246,282,1246,282,1274,210,1274],"score":0.77,"latex":"\\mathrm{CV}(H)"},{"category_id":13,"poly":[1346,268,1361,268,1361,292,1346,292],"score":0.76,"latex":"q"},{"category_id":13,"poly":[215,957,238,957,238,981,215,981],"score":0.74,"latex":"H"},{"category_id":13,"poly":[149,956,173,956,173,981,149,981],"score":0.63,"latex":"W"},{"category_id":13,"poly":[924,841,1016,841,1016,868,924,868],"score":0.56,"latex":"8{\\mathrm{:}}00\\;\\mathrm{a.m}"},{"category_id":13,"poly":[956,871,1032,871,1032,898,956,898],"score":0.43,"latex":"20\\ \\mathrm{min}"},{"category_id":13,"poly":[1082,781,1112,781,1112,808,1082,808],"score":0.41,"latex":"(I)"},{"category_id":13,"poly":[697,1821,734,1821,734,1847,697,1847],"score":0.3,"latex":"1\\,\\mathrm{~h~}"},{"category_id":15,"poly":[881.0,174.0,1552.0,174.0,1552.0,204.0,881.0,204.0],"score":1.0,"text":"model. They also found that the empirical distributions of passenger"},{"category_id":15,"poly":[880.0,205.0,1552.0,205.0,1552.0,236.0,880.0,236.0],"score":0.99,"text":"incidence times (by time of day) had peaks just before the respec-"},{"category_id":15,"poly":[880.0,234.0,1553.0,234.0,1553.0,264.0,880.0,264.0],"score":0.99,"text":"tive average bus departure times. They hypothesized the existence"},{"category_id":15,"poly":[881.0,264.0,1345.0,264.0,1345.0,296.0,881.0,296.0],"score":0.98,"text":"of three classes of passengers: with proportion"},{"category_id":15,"poly":[1362.0,264.0,1552.0,264.0,1552.0,296.0,1362.0,296.0],"score":0.95,"text":"passengers whose"},{"category_id":15,"poly":[880.0,295.0,1552.0,295.0,1552.0,325.0,880.0,325.0],"score":1.0,"text":"time of incidence is causally coincident with that of a bus departure"},{"category_id":15,"poly":[880.0,326.0,1555.0,326.0,1555.0,355.0,880.0,355.0],"score":0.99,"text":"(e.g., because they saw the approaching bus from their home or a"},{"category_id":15,"poly":[881.0,356.0,1195.0,356.0,1195.0,388.0,881.0,388.0],"score":0.99,"text":"shop window); with proportion"},{"category_id":15,"poly":[1279.0,356.0,1553.0,356.0,1553.0,388.0,1279.0,388.0],"score":0.99,"text":", passengers who time their"},{"category_id":15,"poly":[882.0,388.0,1552.0,388.0,1552.0,416.0,882.0,416.0],"score":0.99,"text":"arrivals to minimize expected waiting time; and with proportion"},{"category_id":15,"poly":[1021.0,418.0,1553.0,418.0,1553.0,447.0,1021.0,447.0],"score":1.0,"text":", passengers who are randomly incident. The authors"},{"category_id":15,"poly":[881.0,448.0,989.0,448.0,989.0,477.0,881.0,477.0],"score":1.0,"text":"found that"},{"category_id":15,"poly":[1008.0,448.0,1553.0,448.0,1553.0,477.0,1008.0,477.0],"score":1.0,"text":"was positively correlated with the potential reduction"},{"category_id":15,"poly":[880.0,479.0,1552.0,479.0,1552.0,507.0,880.0,507.0],"score":1.0,"text":"in waiting time (compared with arriving randomly) that resulted"},{"category_id":15,"poly":[882.0,510.0,1551.0,510.0,1551.0,536.0,882.0,536.0],"score":0.97,"text":"from knowledge of the timetable and of service reliability. They also"},{"category_id":15,"poly":[881.0,539.0,943.0,539.0,943.0,568.0,881.0,568.0],"score":1.0,"text":"found"},{"category_id":15,"poly":[963.0,539.0,1553.0,539.0,1553.0,568.0,963.0,568.0],"score":0.99,"text":"to be higher in the peak commuting periods rather than in"},{"category_id":15,"poly":[881.0,568.0,1554.0,568.0,1554.0,599.0,881.0,599.0],"score":0.98,"text":"the off-peak periods, indicating more awareness of the timetable or"},{"category_id":15,"poly":[881.0,599.0,1323.0,599.0,1323.0,627.0,881.0,627.0],"score":0.98,"text":"historical reliability, or both, by commuters."},{"category_id":15,"poly":[905.0,1452.0,1551.0,1452.0,1551.0,1483.0,905.0,1483.0],"score":0.99,"text":"Furth and Muller study the issue in a theoretical context and gener-"},{"category_id":15,"poly":[883.0,1485.0,1553.0,1485.0,1553.0,1514.0,883.0,1514.0],"score":1.0,"text":"ally agree with the above findings (2). They are primarily concerned"},{"category_id":15,"poly":[882.0,1513.0,1553.0,1513.0,1553.0,1545.0,882.0,1545.0],"score":0.99,"text":"with the use of data from automatic vehicle-tracking systems to assess"},{"category_id":15,"poly":[880.0,1545.0,1553.0,1545.0,1553.0,1574.0,880.0,1574.0],"score":0.99,"text":"the impacts of reliability on passenger incidence behavior and wait-"},{"category_id":15,"poly":[881.0,1577.0,1551.0,1577.0,1551.0,1606.0,881.0,1606.0],"score":0.98,"text":"ing times. They propose that passengers will react to unreliability by"},{"category_id":15,"poly":[883.0,1608.0,1551.0,1608.0,1551.0,1637.0,883.0,1637.0],"score":1.0,"text":"departing earlier than they would with reliable services. Randomly"},{"category_id":15,"poly":[880.0,1636.0,1554.0,1636.0,1554.0,1669.0,880.0,1669.0],"score":1.0,"text":"incident unaware passengers will experience unreliability as a more"},{"category_id":15,"poly":[882.0,1669.0,1553.0,1669.0,1553.0,1697.0,882.0,1697.0],"score":0.99,"text":"dispersed distribution of headways and simply allocate additional"},{"category_id":15,"poly":[880.0,1699.0,1551.0,1699.0,1551.0,1726.0,880.0,1726.0],"score":0.97,"text":"time to their trip plan to improve the chance of arriving at their des-"},{"category_id":15,"poly":[881.0,1730.0,1551.0,1730.0,1551.0,1759.0,881.0,1759.0],"score":0.98,"text":"tination on time. Aware passengers, whose incidence is not entirely"},{"category_id":15,"poly":[880.0,1760.0,1552.0,1760.0,1552.0,1789.0,880.0,1789.0],"score":0.99,"text":"random, will react by timing their incidence somewhat earlier than"},{"category_id":15,"poly":[882.0,1792.0,1550.0,1792.0,1550.0,1818.0,882.0,1818.0],"score":0.99,"text":"the scheduled departure time to increase their chance of catching the"},{"category_id":15,"poly":[883.0,1823.0,1552.0,1823.0,1552.0,1849.0,883.0,1849.0],"score":0.99,"text":"desired service. The authors characterize these reactions as the costs"},{"category_id":15,"poly":[883.0,1853.0,1031.0,1853.0,1031.0,1880.0,883.0,1880.0],"score":0.95,"text":"of unreliability."},{"category_id":15,"poly":[907.0,630.0,1553.0,630.0,1553.0,658.0,907.0,658.0],"score":1.0,"text":"Bowman and Turnquist built on the concept of aware and unaware"},{"category_id":15,"poly":[881.0,662.0,1136.0,662.0,1136.0,690.0,881.0,690.0],"score":0.99,"text":"passengers of proportions"},{"category_id":15,"poly":[1155.0,662.0,1196.0,662.0,1196.0,690.0,1155.0,690.0],"score":1.0,"text":"and"},{"category_id":15,"poly":[1264.0,662.0,1553.0,662.0,1553.0,690.0,1264.0,690.0],"score":0.99,"text":",respectively. They proposed"},{"category_id":15,"poly":[881.0,692.0,1208.0,692.0,1208.0,719.0,881.0,719.0],"score":0.99,"text":"a utility-based model to estimate"},{"category_id":15,"poly":[1226.0,692.0,1552.0,692.0,1552.0,719.0,1226.0,719.0],"score":1.0,"text":"and the distribution of incidence"},{"category_id":15,"poly":[880.0,721.0,1554.0,721.0,1554.0,751.0,880.0,751.0],"score":0.99,"text":"times, and thus the mean waiting time, of aware passengers over"},{"category_id":15,"poly":[880.0,752.0,1553.0,752.0,1553.0,780.0,880.0,780.0],"score":0.98,"text":"a given headway as a function of the headway and reliability of"},{"category_id":15,"poly":[880.0,782.0,1081.0,782.0,1081.0,812.0,880.0,812.0],"score":0.99,"text":"bus departure times"},{"category_id":15,"poly":[1113.0,782.0,1552.0,782.0,1552.0,812.0,1113.0,812.0],"score":0.99,"text":". They observed seven bus stops in Chicago,"},{"category_id":15,"poly":[882.0,813.0,1553.0,813.0,1553.0,841.0,882.0,841.0],"score":0.98,"text":"Illinois, each served by a single (different) bus route, between 6:00"},{"category_id":15,"poly":[882.0,844.0,923.0,844.0,923.0,871.0,882.0,871.0],"score":1.0,"text":"and"},{"category_id":15,"poly":[1017.0,844.0,1550.0,844.0,1550.0,871.0,1017.0,871.0],"score":0.97,"text":".for 5 to 10 days each. The bus routes had headways"},{"category_id":15,"poly":[882.0,874.0,955.0,874.0,955.0,902.0,882.0,902.0],"score":0.95,"text":"of 5to"},{"category_id":15,"poly":[1033.0,874.0,1553.0,874.0,1553.0,902.0,1033.0,902.0],"score":0.98,"text":"and a range of reliabilities. The authors found that"},{"category_id":15,"poly":[882.0,906.0,1553.0,906.0,1553.0,933.0,882.0,933.0],"score":0.99,"text":"actual average waiting time was substantially less than predicted"},{"category_id":15,"poly":[881.0,935.0,1443.0,935.0,1443.0,963.0,881.0,963.0],"score":1.0,"text":"by the random incidence model. They estimated that"},{"category_id":15,"poly":[1462.0,935.0,1553.0,935.0,1553.0,963.0,1462.0,963.0],"score":0.96,"text":"was not"},{"category_id":15,"poly":[881.0,966.0,1552.0,966.0,1552.0,994.0,881.0,994.0],"score":0.98,"text":"statistically significantly different from 1.0, which they explain by"},{"category_id":15,"poly":[880.0,994.0,1552.0,994.0,1552.0,1025.0,880.0,1025.0],"score":0.99,"text":"the fact that all observations were taken during peak commuting"},{"category_id":15,"poly":[880.0,1027.0,1552.0,1027.0,1552.0,1054.0,880.0,1054.0],"score":0.99,"text":"times. Their model predicts that the longer the headway and the"},{"category_id":15,"poly":[881.0,1058.0,1554.0,1058.0,1554.0,1086.0,881.0,1086.0],"score":0.99,"text":"more reliable the departures, the more peaked the distribution of"},{"category_id":15,"poly":[881.0,1088.0,1553.0,1088.0,1553.0,1115.0,881.0,1115.0],"score":0.98,"text":"incidence times will be and the closer that peak will be to the next"},{"category_id":15,"poly":[882.0,1119.0,1552.0,1119.0,1552.0,1148.0,882.0,1148.0],"score":1.0,"text":"scheduled departure time. This prediction demonstrates what they"},{"category_id":15,"poly":[882.0,1149.0,1552.0,1149.0,1552.0,1176.0,882.0,1176.0],"score":0.99,"text":"refer to as a safety margin that passengers add to reduce the chance"},{"category_id":15,"poly":[883.0,1181.0,1552.0,1181.0,1552.0,1206.0,883.0,1206.0],"score":0.98,"text":"of missing their bus when the service is known to be somewhat"},{"category_id":15,"poly":[882.0,1210.0,1551.0,1210.0,1551.0,1238.0,882.0,1238.0],"score":0.98,"text":"unreliable. Such a safety margin can also result from unreliability in"},{"category_id":15,"poly":[881.0,1242.0,1553.0,1242.0,1553.0,1269.0,881.0,1269.0],"score":0.99,"text":"passengers' journeys to the public transport stop or station. Bowman"},{"category_id":15,"poly":[882.0,1271.0,1553.0,1271.0,1553.0,1299.0,882.0,1299.0],"score":0.99,"text":"and Turnquist conclude from their model that the random incidence"},{"category_id":15,"poly":[880.0,1301.0,1551.0,1301.0,1551.0,1331.0,880.0,1331.0],"score":0.99,"text":"model underestimates the waiting time benefits of improving reli-"},{"category_id":15,"poly":[882.0,1332.0,1552.0,1332.0,1552.0,1362.0,882.0,1362.0],"score":0.99,"text":"ability and overestimates the waiting time benefits of increasing ser-"},{"category_id":15,"poly":[883.0,1363.0,1552.0,1363.0,1552.0,1392.0,883.0,1392.0],"score":0.99,"text":"vice frequency. This is because as reliability increases passengers"},{"category_id":15,"poly":[882.0,1394.0,1552.0,1394.0,1552.0,1422.0,882.0,1422.0],"score":0.99,"text":"can better predict departure times and so can time their incidence to"},{"category_id":15,"poly":[882.0,1423.0,1159.0,1423.0,1159.0,1452.0,882.0,1452.0],"score":0.99,"text":"decrease their waiting time."},{"category_id":15,"poly":[175.0,235.0,819.0,235.0,819.0,264.0,175.0,264.0],"score":0.99,"text":"After briefly introducing the random incidence model, which is"},{"category_id":15,"poly":[149.0,265.0,818.0,265.0,818.0,295.0,149.0,295.0],"score":0.98,"text":"often assumed to hold at short headways, the balance of this section"},{"category_id":15,"poly":[148.0,298.0,818.0,298.0,818.0,324.0,148.0,324.0],"score":0.98,"text":"reviews six studies of passenger incidence behavior that are moti-"},{"category_id":15,"poly":[148.0,327.0,818.0,327.0,818.0,356.0,148.0,356.0],"score":1.0,"text":"vated by understanding the relationships between service headway,"},{"category_id":15,"poly":[146.0,355.0,820.0,355.0,820.0,388.0,146.0,388.0],"score":0.99,"text":"service reliability, passenger incidence behavior, and passenger"},{"category_id":15,"poly":[149.0,388.0,818.0,388.0,818.0,414.0,149.0,414.0],"score":1.0,"text":"waiting time in a more nuanced fashion than is embedded in the"},{"category_id":15,"poly":[149.0,419.0,818.0,419.0,818.0,445.0,149.0,445.0],"score":1.0,"text":"random incidence assumption (2). Three of these studies depend on"},{"category_id":15,"poly":[147.0,447.0,818.0,447.0,818.0,477.0,147.0,477.0],"score":0.99,"text":"manually collected data, two studies use data from AFC systems,"},{"category_id":15,"poly":[148.0,479.0,819.0,479.0,819.0,507.0,148.0,507.0],"score":0.99,"text":"and one study analyzes the issue purely theoretically. These studies"},{"category_id":15,"poly":[147.0,509.0,819.0,509.0,819.0,537.0,147.0,537.0],"score":0.99,"text":"reveal much about passenger incidence behavior, but all are found"},{"category_id":15,"poly":[147.0,538.0,820.0,538.0,820.0,567.0,147.0,567.0],"score":0.99,"text":"to be limited in their general applicability by the methods with"},{"category_id":15,"poly":[150.0,569.0,818.0,569.0,818.0,597.0,150.0,597.0],"score":0.99,"text":"which they collect information about passengers and the services"},{"category_id":15,"poly":[147.0,599.0,458.0,599.0,458.0,630.0,147.0,630.0],"score":1.0,"text":"those passengers intend to use."},{"category_id":15,"poly":[150.0,1219.0,212.0,1219.0,212.0,1247.0,150.0,1247.0],"score":1.0,"text":"where"},{"category_id":15,"poly":[264.0,1219.0,817.0,1219.0,817.0,1247.0,264.0,1247.0],"score":0.99,"text":"is the probabilistic expectation of some random variable"},{"category_id":15,"poly":[168.0,1248.0,209.0,1248.0,209.0,1275.0,168.0,1275.0],"score":1.0,"text":"and"},{"category_id":15,"poly":[283.0,1248.0,601.0,1248.0,601.0,1275.0,283.0,1275.0],"score":0.97,"text":"is the coefficient of variation of"},{"category_id":15,"poly":[625.0,1248.0,818.0,1248.0,818.0,1275.0,625.0,1275.0],"score":0.96,"text":".a unitless measure"},{"category_id":15,"poly":[148.0,1277.0,345.0,1277.0,345.0,1307.0,148.0,1307.0],"score":0.97,"text":"of the variability of"},{"category_id":15,"poly":[370.0,1277.0,477.0,1277.0,477.0,1307.0,370.0,1307.0],"score":0.99,"text":"defined as"},{"category_id":15,"poly":[906.0,1883.0,1552.0,1883.0,1552.0,1910.0,906.0,1910.0],"score":0.98,"text":"Luethi et al. continued with the analysis of manually collected"},{"category_id":15,"poly":[880.0,1909.0,1552.0,1909.0,1552.0,1945.0,880.0,1945.0],"score":0.99,"text":"data on actual passenger behavior (6). They use the language"},{"category_id":15,"poly":[883.0,1945.0,1552.0,1945.0,1552.0,1972.0,883.0,1972.0],"score":0.99,"text":"of probability to describe two classes of passengers. The first is"},{"category_id":15,"poly":[881.0,1973.0,1552.0,1973.0,1552.0,2003.0,881.0,2003.0],"score":1.0,"text":"timetable-dependent passengers (i.e., the aware passengers), whose"},{"category_id":15,"poly":[881.0,2006.0,1552.0,2006.0,1552.0,2033.0,881.0,2033.0],"score":1.0,"text":"incidence behavior is affected by awareness (possibly gained"},{"category_id":15,"poly":[149.0,748.0,817.0,748.0,817.0,774.0,149.0,774.0],"score":1.0,"text":"One characterization of passenger incidence behavior is that of ran-"},{"category_id":15,"poly":[148.0,777.0,818.0,777.0,818.0,806.0,148.0,806.0],"score":0.99,"text":"dom incidence (3). The key assumption underlying the random inci-"},{"category_id":15,"poly":[148.0,807.0,818.0,807.0,818.0,836.0,148.0,836.0],"score":0.99,"text":"dence model is that the process of passenger arrivals to the public"},{"category_id":15,"poly":[148.0,837.0,819.0,837.0,819.0,866.0,148.0,866.0],"score":0.99,"text":"transport service is independent from the vehicle departure process"},{"category_id":15,"poly":[148.0,868.0,818.0,868.0,818.0,897.0,148.0,897.0],"score":1.0,"text":"of the service. This implies that passengers become incident to the"},{"category_id":15,"poly":[149.0,899.0,817.0,899.0,817.0,925.0,149.0,925.0],"score":0.99,"text":"service at a random time, and thus the instantaneous rate of passen-"},{"category_id":15,"poly":[148.0,928.0,820.0,928.0,820.0,957.0,148.0,957.0],"score":1.0,"text":"ger arrivals to the service is uniform over a given period of time. Let"},{"category_id":15,"poly":[174.0,956.0,214.0,956.0,214.0,990.0,174.0,990.0],"score":1.0,"text":"and"},{"category_id":15,"poly":[239.0,956.0,818.0,956.0,818.0,990.0,239.0,990.0],"score":0.99,"text":"be random variables representing passenger waiting times"},{"category_id":15,"poly":[148.0,988.0,818.0,988.0,818.0,1016.0,148.0,1016.0],"score":1.0,"text":"and service headways, respectively. Under the random incidence"},{"category_id":15,"poly":[149.0,1019.0,818.0,1019.0,818.0,1048.0,149.0,1048.0],"score":0.98,"text":"assumption and the assumption that vehicle capacity is not a binding"},{"category_id":15,"poly":[149.0,1050.0,726.0,1050.0,726.0,1076.0,149.0,1076.0],"score":0.99,"text":"constraint, a classic result of transportation science is that"},{"category_id":15,"poly":[146.0,1793.0,818.0,1793.0,818.0,1822.0,146.0,1822.0],"score":0.98,"text":" Jolliffe and Hutchinson studied bus passenger incidence in South"},{"category_id":15,"poly":[147.0,1825.0,696.0,1825.0,696.0,1852.0,147.0,1852.0],"score":0.97,"text":"London suburbs (5). They observed 10 bus stops for"},{"category_id":15,"poly":[735.0,1825.0,817.0,1825.0,817.0,1852.0,735.0,1852.0],"score":1.0,"text":"perday"},{"category_id":15,"poly":[148.0,1855.0,819.0,1855.0,819.0,1881.0,148.0,1881.0],"score":1.0,"text":"over 8 days, recording the times of passenger incidence and actual"},{"category_id":15,"poly":[148.0,1884.0,819.0,1884.0,819.0,1912.0,148.0,1912.0],"score":0.98,"text":"and scheduled bus departures. They limited their stop selection to"},{"category_id":15,"poly":[146.0,1913.0,819.0,1913.0,819.0,1945.0,146.0,1945.0],"score":1.0,"text":"those served by only a single bus route with a single service pat-"},{"category_id":15,"poly":[147.0,1945.0,819.0,1945.0,819.0,1974.0,147.0,1974.0],"score":0.98,"text":"tern so as to avoid ambiguity about which service a passenger was"},{"category_id":15,"poly":[147.0,1972.0,820.0,1972.0,820.0,2006.0,147.0,2006.0],"score":0.98,"text":"waiting for. The authors found that the actual average passenger"},{"category_id":15,"poly":[149.0,2005.0,323.0,2005.0,323.0,2033.0,149.0,2033.0],"score":0.96,"text":"waitingtimewas"},{"category_id":15,"poly":[374.0,2005.0,819.0,2005.0,819.0,2033.0,374.0,2033.0],"score":1.0,"text":"less than predicted by the random incidence"},{"category_id":15,"poly":[148.0,686.0,625.0,686.0,625.0,721.0,148.0,721.0],"score":0.99,"text":"Random Passenger Incidence Behavior"},{"category_id":15,"poly":[151.0,1434.0,213.0,1434.0,213.0,1462.0,151.0,1462.0],"score":0.99,"text":"where"},{"category_id":15,"poly":[246.0,1434.0,521.0,1434.0,521.0,1462.0,246.0,1462.0],"score":0.98,"text":"is the standard deviation of"},{"category_id":15,"poly":[580.0,1434.0,816.0,1434.0,816.0,1462.0,580.0,1462.0],"score":0.96,"text":".The second expression"},{"category_id":15,"poly":[148.0,1466.0,819.0,1466.0,819.0,1493.0,148.0,1493.0],"score":0.99,"text":"in Equation 1 is particularly useful because it expresses the mean"},{"category_id":15,"poly":[146.0,1496.0,819.0,1496.0,819.0,1525.0,146.0,1525.0],"score":0.99,"text":"passenger waiting time as the sum of two components: the waiting"},{"category_id":15,"poly":[148.0,1526.0,818.0,1526.0,818.0,1553.0,148.0,1553.0],"score":0.98,"text":"time caused by the mean headway (i.e., the reciprocal of service fre-"},{"category_id":15,"poly":[147.0,1557.0,819.0,1557.0,819.0,1584.0,147.0,1584.0],"score":0.99,"text":"quency) and the waiting time caused by the variability of the head-"},{"category_id":15,"poly":[148.0,1588.0,818.0,1588.0,818.0,1612.0,148.0,1612.0],"score":0.97,"text":"ways (which is one measure of service reliability). When the service"},{"category_id":15,"poly":[148.0,1617.0,817.0,1617.0,817.0,1644.0,148.0,1644.0],"score":1.0,"text":"is perfectly reliable with constant headways, the mean waiting time"},{"category_id":15,"poly":[148.0,1646.0,472.0,1646.0,472.0,1677.0,148.0,1677.0],"score":0.99,"text":"will be simply half the headway."},{"category_id":15,"poly":[151.0,176.0,817.0,176.0,817.0,204.0,151.0,204.0],"score":0.99,"text":"dependent on the service headway and the reliability of the departure"},{"category_id":15,"poly":[147.0,205.0,652.0,205.0,652.0,236.0,147.0,236.0],"score":0.99,"text":"time of the service to which passengers are incident."},{"category_id":15,"poly":[149.0,1735.0,702.0,1735.0,702.0,1767.0,149.0,1767.0],"score":0.98,"text":"More Behaviorally Realistic Incidence Models"},{"category_id":15,"poly":[1519.0,98.0,1554.0,98.0,1554.0,125.0,1519.0,125.0],"score":1.0,"text":"53"},{"category_id":15,"poly":[148.0,98.0,322.0,98.0,322.0,123.0,148.0,123.0],"score":1.0,"text":"Frumin and Zhao"}],"page_info":{"page_no":0,"height":2200,"width":1700}}]} diff --git a/tests/unittest/test_tools/assets/cli_dev/cli_test_01.model.json b/tests/unittest/test_tools/assets/cli_dev/cli_test_01.model.json deleted file mode 100644 index 522b78dc..00000000 --- a/tests/unittest/test_tools/assets/cli_dev/cli_test_01.model.json +++ /dev/null @@ -1 +0,0 @@ -[{"layout_dets":[{"category_id":1,"poly":[882.4013061523438,169.93817138671875,1552.350341796875,169.93817138671875,1552.350341796875,625.8263549804688,882.4013061523438,625.8263549804688],"score":0.999992311000824},{"category_id":1,"poly":[882.474853515625,1450.92822265625,1551.4490966796875,1450.92822265625,1551.4490966796875,1877.5712890625,882.474853515625,1877.5712890625],"score":0.9999903440475464},{"category_id":1,"poly":[881.6513061523438,626.2058715820312,1552.1400146484375,626.2058715820312,1552.1400146484375,1450.604736328125,881.6513061523438,1450.604736328125],"score":0.9999856352806091},{"category_id":1,"poly":[149.41075134277344,232.1595001220703,819.0465087890625,232.1595001220703,819.0465087890625,625.8865356445312,149.41075134277344,625.8865356445312],"score":0.99998539686203},{"category_id":1,"poly":[149.3945770263672,1215.5172119140625,817.8850708007812,1215.5172119140625,817.8850708007812,1304.873291015625,149.3945770263672,1304.873291015625],"score":0.9999765157699585},{"category_id":1,"poly":[882.6979370117188,1880.13916015625,1552.15185546875,1880.13916015625,1552.15185546875,2031.339599609375,882.6979370117188,2031.339599609375],"score":0.9999744892120361},{"category_id":1,"poly":[148.96054077148438,743.3055419921875,818.6231689453125,743.3055419921875,818.6231689453125,1074.2369384765625,148.96054077148438,1074.2369384765625],"score":0.9999669790267944},{"category_id":1,"poly":[148.8435516357422,1791.14306640625,818.6885375976562,1791.14306640625,818.6885375976562,2030.794189453125,148.8435516357422,2030.794189453125],"score":0.9999618530273438},{"category_id":0,"poly":[150.7009735107422,684.0087890625,623.5106201171875,684.0087890625,623.5106201171875,717.03662109375,150.7009735107422,717.03662109375],"score":0.9999415278434753},{"category_id":8,"poly":[146.48068237304688,1331.6737060546875,317.2640075683594,1331.6737060546875,317.2640075683594,1400.1722412109375,146.48068237304688,1400.1722412109375],"score":0.9998958110809326},{"category_id":1,"poly":[149.42420959472656,1430.8782958984375,818.9042358398438,1430.8782958984375,818.9042358398438,1672.7386474609375,149.42420959472656,1672.7386474609375],"score":0.9998599290847778},{"category_id":1,"poly":[149.18746948242188,172.10252380371094,818.5662231445312,172.10252380371094,818.5662231445312,230.4594268798828,149.18746948242188,230.4594268798828],"score":0.9997718334197998},{"category_id":0,"poly":[149.0175018310547,1732.1090087890625,702.1005859375,1732.1090087890625,702.1005859375,1763.6046142578125,149.0175018310547,1763.6046142578125],"score":0.9997085928916931},{"category_id":2,"poly":[1519.802490234375,98.59099578857422,1551.985107421875,98.59099578857422,1551.985107421875,119.48420715332031,1519.802490234375,119.48420715332031],"score":0.9995552897453308},{"category_id":8,"poly":[146.9109649658203,1100.156494140625,544.2803344726562,1100.156494140625,544.2803344726562,1184.929443359375,146.9109649658203,1184.929443359375],"score":0.9995207786560059},{"category_id":2,"poly":[148.11611938476562,99.87767791748047,318.926025390625,99.87767791748047,318.926025390625,120.70393371582031,148.11611938476562,120.70393371582031],"score":0.999351441860199},{"category_id":9,"poly":[791.7642211914062,1130.056396484375,818.6940307617188,1130.056396484375,818.6940307617188,1161.1080322265625,791.7642211914062,1161.1080322265625],"score":0.9908884763717651},{"category_id":9,"poly":[788.37060546875,1346.8450927734375,818.5010986328125,1346.8450927734375,818.5010986328125,1377.370361328125,788.37060546875,1377.370361328125],"score":0.9873985052108765},{"category_id":14,"poly":[146,1103,543,1103,543,1184,146,1184],"score":0.94,"latex":"E\\!\\left(W\\right)\\!=\\!\\frac{E\\!\\left[H^{2}\\right]}{2E\\!\\left[H\\right]}\\!=\\!\\frac{E\\!\\left[H\\right]}{2}\\!\\!\\left(1\\!+\\!\\operatorname{CV}\\!\\left(H\\right)^{2}\\right)"},{"category_id":13,"poly":[1196,354,1278,354,1278,384,1196,384],"score":0.91,"latex":"p(1-q)"},{"category_id":13,"poly":[881,415,1020,415,1020,444,881,444],"score":0.91,"latex":"(1-p)(1-q)"},{"category_id":14,"poly":[147,1333,318,1333,318,1400,147,1400],"score":0.91,"latex":"\\mathrm{CV}\\big(H\\big)\\!=\\!\\frac{\\sigma_{_H}}{E\\big[H\\big]}"},{"category_id":13,"poly":[1197,657,1263,657,1263,686,1197,686],"score":0.9,"latex":"(1-p)"},{"category_id":13,"poly":[213,1217,263,1217,263,1244,213,1244],"score":0.88,"latex":"E[X]"},{"category_id":13,"poly":[214,1434,245,1434,245,1459,214,1459],"score":0.87,"latex":"\\upsigma_{H}"},{"category_id":13,"poly":[324,2002,373,2002,373,2028,324,2028],"score":0.84,"latex":"30\\%"},{"category_id":13,"poly":[1209,693,1225,693,1225,717,1209,717],"score":0.83,"latex":"p"},{"category_id":13,"poly":[990,449,1007,449,1007,474,990,474],"score":0.81,"latex":"p"},{"category_id":13,"poly":[346,1277,369,1277,369,1301,346,1301],"score":0.81,"latex":"H"},{"category_id":13,"poly":[1137,661,1154,661,1154,686,1137,686],"score":0.81,"latex":"p"},{"category_id":13,"poly":[522,1432,579,1432,579,1459,522,1459],"score":0.81,"latex":"H\\left(4\\right)"},{"category_id":13,"poly":[944,540,962,540,962,565,944,565],"score":0.8,"latex":"p"},{"category_id":13,"poly":[1444,936,1461,936,1461,961,1444,961],"score":0.79,"latex":"p"},{"category_id":13,"poly":[602,1247,624,1247,624,1270,602,1270],"score":0.78,"latex":"H"},{"category_id":13,"poly":[147,1247,167,1247,167,1271,147,1271],"score":0.77,"latex":"X"},{"category_id":13,"poly":[210,1246,282,1246,282,1274,210,1274],"score":0.77,"latex":"\\mathrm{CV}(H)"},{"category_id":13,"poly":[1346,268,1361,268,1361,292,1346,292],"score":0.76,"latex":"q"},{"category_id":13,"poly":[215,957,238,957,238,981,215,981],"score":0.74,"latex":"H"},{"category_id":13,"poly":[149,956,173,956,173,981,149,981],"score":0.63,"latex":"W"},{"category_id":13,"poly":[924,841,1016,841,1016,868,924,868],"score":0.56,"latex":"8{\\mathrm{:}}00\\;\\mathrm{a.m}"},{"category_id":13,"poly":[956,871,1032,871,1032,898,956,898],"score":0.43,"latex":"20\\ \\mathrm{min}"},{"category_id":13,"poly":[1082,781,1112,781,1112,808,1082,808],"score":0.41,"latex":"(I)"},{"category_id":13,"poly":[697,1821,734,1821,734,1847,697,1847],"score":0.3,"latex":"1\\,\\mathrm{~h~}"},{"category_id":15,"poly":[881.0,174.0,1552.0,174.0,1552.0,204.0,881.0,204.0],"score":1.0,"text":"model. They also found that the empirical distributions of passenger"},{"category_id":15,"poly":[880.0,205.0,1552.0,205.0,1552.0,236.0,880.0,236.0],"score":0.99,"text":"incidence times (by time of day) had peaks just before the respec-"},{"category_id":15,"poly":[880.0,234.0,1553.0,234.0,1553.0,264.0,880.0,264.0],"score":0.99,"text":"tive average bus departure times. They hypothesized the existence"},{"category_id":15,"poly":[881.0,264.0,1345.0,264.0,1345.0,296.0,881.0,296.0],"score":0.98,"text":"of three classes of passengers: with proportion"},{"category_id":15,"poly":[1362.0,264.0,1552.0,264.0,1552.0,296.0,1362.0,296.0],"score":0.95,"text":"passengers whose"},{"category_id":15,"poly":[880.0,295.0,1552.0,295.0,1552.0,325.0,880.0,325.0],"score":1.0,"text":"time of incidence is causally coincident with that of a bus departure"},{"category_id":15,"poly":[880.0,326.0,1555.0,326.0,1555.0,355.0,880.0,355.0],"score":0.99,"text":"(e.g., because they saw the approaching bus from their home or a"},{"category_id":15,"poly":[881.0,356.0,1195.0,356.0,1195.0,388.0,881.0,388.0],"score":0.99,"text":"shop window); with proportion"},{"category_id":15,"poly":[1279.0,356.0,1553.0,356.0,1553.0,388.0,1279.0,388.0],"score":0.99,"text":", passengers who time their"},{"category_id":15,"poly":[882.0,388.0,1552.0,388.0,1552.0,416.0,882.0,416.0],"score":0.99,"text":"arrivals to minimize expected waiting time; and with proportion"},{"category_id":15,"poly":[1021.0,418.0,1553.0,418.0,1553.0,447.0,1021.0,447.0],"score":1.0,"text":", passengers who are randomly incident. The authors"},{"category_id":15,"poly":[881.0,448.0,989.0,448.0,989.0,477.0,881.0,477.0],"score":1.0,"text":"found that"},{"category_id":15,"poly":[1008.0,448.0,1553.0,448.0,1553.0,477.0,1008.0,477.0],"score":1.0,"text":"was positively correlated with the potential reduction"},{"category_id":15,"poly":[880.0,479.0,1552.0,479.0,1552.0,507.0,880.0,507.0],"score":1.0,"text":"in waiting time (compared with arriving randomly) that resulted"},{"category_id":15,"poly":[882.0,510.0,1551.0,510.0,1551.0,536.0,882.0,536.0],"score":0.97,"text":"from knowledge of the timetable and of service reliability. They also"},{"category_id":15,"poly":[881.0,539.0,943.0,539.0,943.0,568.0,881.0,568.0],"score":1.0,"text":"found"},{"category_id":15,"poly":[963.0,539.0,1553.0,539.0,1553.0,568.0,963.0,568.0],"score":0.99,"text":"to be higher in the peak commuting periods rather than in"},{"category_id":15,"poly":[881.0,568.0,1554.0,568.0,1554.0,599.0,881.0,599.0],"score":0.98,"text":"the off-peak periods, indicating more awareness of the timetable or"},{"category_id":15,"poly":[881.0,599.0,1323.0,599.0,1323.0,627.0,881.0,627.0],"score":0.98,"text":"historical reliability, or both, by commuters."},{"category_id":15,"poly":[905.0,1452.0,1551.0,1452.0,1551.0,1483.0,905.0,1483.0],"score":0.99,"text":"Furth and Muller study the issue in a theoretical context and gener-"},{"category_id":15,"poly":[883.0,1485.0,1553.0,1485.0,1553.0,1514.0,883.0,1514.0],"score":1.0,"text":"ally agree with the above findings (2). They are primarily concerned"},{"category_id":15,"poly":[882.0,1513.0,1553.0,1513.0,1553.0,1545.0,882.0,1545.0],"score":0.99,"text":"with the use of data from automatic vehicle-tracking systems to assess"},{"category_id":15,"poly":[880.0,1545.0,1553.0,1545.0,1553.0,1574.0,880.0,1574.0],"score":0.99,"text":"the impacts of reliability on passenger incidence behavior and wait-"},{"category_id":15,"poly":[881.0,1577.0,1551.0,1577.0,1551.0,1606.0,881.0,1606.0],"score":0.98,"text":"ing times. They propose that passengers will react to unreliability by"},{"category_id":15,"poly":[883.0,1608.0,1551.0,1608.0,1551.0,1637.0,883.0,1637.0],"score":1.0,"text":"departing earlier than they would with reliable services. Randomly"},{"category_id":15,"poly":[880.0,1636.0,1554.0,1636.0,1554.0,1669.0,880.0,1669.0],"score":1.0,"text":"incident unaware passengers will experience unreliability as a more"},{"category_id":15,"poly":[882.0,1669.0,1553.0,1669.0,1553.0,1697.0,882.0,1697.0],"score":0.99,"text":"dispersed distribution of headways and simply allocate additional"},{"category_id":15,"poly":[880.0,1699.0,1551.0,1699.0,1551.0,1726.0,880.0,1726.0],"score":0.97,"text":"time to their trip plan to improve the chance of arriving at their des-"},{"category_id":15,"poly":[881.0,1730.0,1551.0,1730.0,1551.0,1759.0,881.0,1759.0],"score":0.98,"text":"tination on time. Aware passengers, whose incidence is not entirely"},{"category_id":15,"poly":[880.0,1760.0,1552.0,1760.0,1552.0,1789.0,880.0,1789.0],"score":0.99,"text":"random, will react by timing their incidence somewhat earlier than"},{"category_id":15,"poly":[882.0,1792.0,1550.0,1792.0,1550.0,1818.0,882.0,1818.0],"score":0.99,"text":"the scheduled departure time to increase their chance of catching the"},{"category_id":15,"poly":[883.0,1823.0,1552.0,1823.0,1552.0,1849.0,883.0,1849.0],"score":0.99,"text":"desired service. The authors characterize these reactions as the costs"},{"category_id":15,"poly":[883.0,1853.0,1031.0,1853.0,1031.0,1880.0,883.0,1880.0],"score":0.95,"text":"of unreliability."},{"category_id":15,"poly":[907.0,630.0,1553.0,630.0,1553.0,658.0,907.0,658.0],"score":1.0,"text":"Bowman and Turnquist built on the concept of aware and unaware"},{"category_id":15,"poly":[881.0,662.0,1136.0,662.0,1136.0,690.0,881.0,690.0],"score":0.99,"text":"passengers of proportions"},{"category_id":15,"poly":[1155.0,662.0,1196.0,662.0,1196.0,690.0,1155.0,690.0],"score":1.0,"text":"and"},{"category_id":15,"poly":[1264.0,662.0,1553.0,662.0,1553.0,690.0,1264.0,690.0],"score":0.99,"text":",respectively. They proposed"},{"category_id":15,"poly":[881.0,692.0,1208.0,692.0,1208.0,719.0,881.0,719.0],"score":0.99,"text":"a utility-based model to estimate"},{"category_id":15,"poly":[1226.0,692.0,1552.0,692.0,1552.0,719.0,1226.0,719.0],"score":1.0,"text":"and the distribution of incidence"},{"category_id":15,"poly":[880.0,721.0,1554.0,721.0,1554.0,751.0,880.0,751.0],"score":0.99,"text":"times, and thus the mean waiting time, of aware passengers over"},{"category_id":15,"poly":[880.0,752.0,1553.0,752.0,1553.0,780.0,880.0,780.0],"score":0.98,"text":"a given headway as a function of the headway and reliability of"},{"category_id":15,"poly":[880.0,782.0,1081.0,782.0,1081.0,812.0,880.0,812.0],"score":0.99,"text":"bus departure times"},{"category_id":15,"poly":[1113.0,782.0,1552.0,782.0,1552.0,812.0,1113.0,812.0],"score":0.99,"text":". They observed seven bus stops in Chicago,"},{"category_id":15,"poly":[882.0,813.0,1553.0,813.0,1553.0,841.0,882.0,841.0],"score":0.98,"text":"Illinois, each served by a single (different) bus route, between 6:00"},{"category_id":15,"poly":[882.0,844.0,923.0,844.0,923.0,871.0,882.0,871.0],"score":1.0,"text":"and"},{"category_id":15,"poly":[1017.0,844.0,1550.0,844.0,1550.0,871.0,1017.0,871.0],"score":0.97,"text":".for 5 to 10 days each. The bus routes had headways"},{"category_id":15,"poly":[882.0,874.0,955.0,874.0,955.0,902.0,882.0,902.0],"score":0.95,"text":"of 5to"},{"category_id":15,"poly":[1033.0,874.0,1553.0,874.0,1553.0,902.0,1033.0,902.0],"score":0.98,"text":"and a range of reliabilities. The authors found that"},{"category_id":15,"poly":[882.0,906.0,1553.0,906.0,1553.0,933.0,882.0,933.0],"score":0.99,"text":"actual average waiting time was substantially less than predicted"},{"category_id":15,"poly":[881.0,935.0,1443.0,935.0,1443.0,963.0,881.0,963.0],"score":1.0,"text":"by the random incidence model. They estimated that"},{"category_id":15,"poly":[1462.0,935.0,1553.0,935.0,1553.0,963.0,1462.0,963.0],"score":0.96,"text":"was not"},{"category_id":15,"poly":[881.0,966.0,1552.0,966.0,1552.0,994.0,881.0,994.0],"score":0.98,"text":"statistically significantly different from 1.0, which they explain by"},{"category_id":15,"poly":[880.0,994.0,1552.0,994.0,1552.0,1025.0,880.0,1025.0],"score":0.99,"text":"the fact that all observations were taken during peak commuting"},{"category_id":15,"poly":[880.0,1027.0,1552.0,1027.0,1552.0,1054.0,880.0,1054.0],"score":0.99,"text":"times. Their model predicts that the longer the headway and the"},{"category_id":15,"poly":[881.0,1058.0,1554.0,1058.0,1554.0,1086.0,881.0,1086.0],"score":0.99,"text":"more reliable the departures, the more peaked the distribution of"},{"category_id":15,"poly":[881.0,1088.0,1553.0,1088.0,1553.0,1115.0,881.0,1115.0],"score":0.98,"text":"incidence times will be and the closer that peak will be to the next"},{"category_id":15,"poly":[882.0,1119.0,1552.0,1119.0,1552.0,1148.0,882.0,1148.0],"score":1.0,"text":"scheduled departure time. This prediction demonstrates what they"},{"category_id":15,"poly":[882.0,1149.0,1552.0,1149.0,1552.0,1176.0,882.0,1176.0],"score":0.99,"text":"refer to as a safety margin that passengers add to reduce the chance"},{"category_id":15,"poly":[883.0,1181.0,1552.0,1181.0,1552.0,1206.0,883.0,1206.0],"score":0.98,"text":"of missing their bus when the service is known to be somewhat"},{"category_id":15,"poly":[882.0,1210.0,1551.0,1210.0,1551.0,1238.0,882.0,1238.0],"score":0.98,"text":"unreliable. Such a safety margin can also result from unreliability in"},{"category_id":15,"poly":[881.0,1242.0,1553.0,1242.0,1553.0,1269.0,881.0,1269.0],"score":0.99,"text":"passengers' journeys to the public transport stop or station. Bowman"},{"category_id":15,"poly":[882.0,1271.0,1553.0,1271.0,1553.0,1299.0,882.0,1299.0],"score":0.99,"text":"and Turnquist conclude from their model that the random incidence"},{"category_id":15,"poly":[880.0,1301.0,1551.0,1301.0,1551.0,1331.0,880.0,1331.0],"score":0.99,"text":"model underestimates the waiting time benefits of improving reli-"},{"category_id":15,"poly":[882.0,1332.0,1552.0,1332.0,1552.0,1362.0,882.0,1362.0],"score":0.99,"text":"ability and overestimates the waiting time benefits of increasing ser-"},{"category_id":15,"poly":[883.0,1363.0,1552.0,1363.0,1552.0,1392.0,883.0,1392.0],"score":0.99,"text":"vice frequency. This is because as reliability increases passengers"},{"category_id":15,"poly":[882.0,1394.0,1552.0,1394.0,1552.0,1422.0,882.0,1422.0],"score":0.99,"text":"can better predict departure times and so can time their incidence to"},{"category_id":15,"poly":[882.0,1423.0,1159.0,1423.0,1159.0,1452.0,882.0,1452.0],"score":0.99,"text":"decrease their waiting time."},{"category_id":15,"poly":[175.0,235.0,819.0,235.0,819.0,264.0,175.0,264.0],"score":0.99,"text":"After briefly introducing the random incidence model, which is"},{"category_id":15,"poly":[149.0,265.0,818.0,265.0,818.0,295.0,149.0,295.0],"score":0.98,"text":"often assumed to hold at short headways, the balance of this section"},{"category_id":15,"poly":[148.0,298.0,818.0,298.0,818.0,324.0,148.0,324.0],"score":0.98,"text":"reviews six studies of passenger incidence behavior that are moti-"},{"category_id":15,"poly":[148.0,327.0,818.0,327.0,818.0,356.0,148.0,356.0],"score":1.0,"text":"vated by understanding the relationships between service headway,"},{"category_id":15,"poly":[146.0,355.0,820.0,355.0,820.0,388.0,146.0,388.0],"score":0.99,"text":"service reliability, passenger incidence behavior, and passenger"},{"category_id":15,"poly":[149.0,388.0,818.0,388.0,818.0,414.0,149.0,414.0],"score":1.0,"text":"waiting time in a more nuanced fashion than is embedded in the"},{"category_id":15,"poly":[149.0,419.0,818.0,419.0,818.0,445.0,149.0,445.0],"score":1.0,"text":"random incidence assumption (2). Three of these studies depend on"},{"category_id":15,"poly":[147.0,447.0,818.0,447.0,818.0,477.0,147.0,477.0],"score":0.99,"text":"manually collected data, two studies use data from AFC systems,"},{"category_id":15,"poly":[148.0,479.0,819.0,479.0,819.0,507.0,148.0,507.0],"score":0.99,"text":"and one study analyzes the issue purely theoretically. These studies"},{"category_id":15,"poly":[147.0,509.0,819.0,509.0,819.0,537.0,147.0,537.0],"score":0.99,"text":"reveal much about passenger incidence behavior, but all are found"},{"category_id":15,"poly":[147.0,538.0,820.0,538.0,820.0,567.0,147.0,567.0],"score":0.99,"text":"to be limited in their general applicability by the methods with"},{"category_id":15,"poly":[150.0,569.0,818.0,569.0,818.0,597.0,150.0,597.0],"score":0.99,"text":"which they collect information about passengers and the services"},{"category_id":15,"poly":[147.0,599.0,458.0,599.0,458.0,630.0,147.0,630.0],"score":1.0,"text":"those passengers intend to use."},{"category_id":15,"poly":[150.0,1219.0,212.0,1219.0,212.0,1247.0,150.0,1247.0],"score":1.0,"text":"where"},{"category_id":15,"poly":[264.0,1219.0,817.0,1219.0,817.0,1247.0,264.0,1247.0],"score":0.99,"text":"is the probabilistic expectation of some random variable"},{"category_id":15,"poly":[168.0,1248.0,209.0,1248.0,209.0,1275.0,168.0,1275.0],"score":1.0,"text":"and"},{"category_id":15,"poly":[283.0,1248.0,601.0,1248.0,601.0,1275.0,283.0,1275.0],"score":0.97,"text":"is the coefficient of variation of"},{"category_id":15,"poly":[625.0,1248.0,818.0,1248.0,818.0,1275.0,625.0,1275.0],"score":0.96,"text":".a unitless measure"},{"category_id":15,"poly":[148.0,1277.0,345.0,1277.0,345.0,1307.0,148.0,1307.0],"score":0.97,"text":"of the variability of"},{"category_id":15,"poly":[370.0,1277.0,477.0,1277.0,477.0,1307.0,370.0,1307.0],"score":0.99,"text":"defined as"},{"category_id":15,"poly":[906.0,1883.0,1552.0,1883.0,1552.0,1910.0,906.0,1910.0],"score":0.98,"text":"Luethi et al. continued with the analysis of manually collected"},{"category_id":15,"poly":[880.0,1909.0,1552.0,1909.0,1552.0,1945.0,880.0,1945.0],"score":0.99,"text":"data on actual passenger behavior (6). They use the language"},{"category_id":15,"poly":[883.0,1945.0,1552.0,1945.0,1552.0,1972.0,883.0,1972.0],"score":0.99,"text":"of probability to describe two classes of passengers. The first is"},{"category_id":15,"poly":[881.0,1973.0,1552.0,1973.0,1552.0,2003.0,881.0,2003.0],"score":1.0,"text":"timetable-dependent passengers (i.e., the aware passengers), whose"},{"category_id":15,"poly":[881.0,2006.0,1552.0,2006.0,1552.0,2033.0,881.0,2033.0],"score":1.0,"text":"incidence behavior is affected by awareness (possibly gained"},{"category_id":15,"poly":[149.0,748.0,817.0,748.0,817.0,774.0,149.0,774.0],"score":1.0,"text":"One characterization of passenger incidence behavior is that of ran-"},{"category_id":15,"poly":[148.0,777.0,818.0,777.0,818.0,806.0,148.0,806.0],"score":0.99,"text":"dom incidence (3). The key assumption underlying the random inci-"},{"category_id":15,"poly":[148.0,807.0,818.0,807.0,818.0,836.0,148.0,836.0],"score":0.99,"text":"dence model is that the process of passenger arrivals to the public"},{"category_id":15,"poly":[148.0,837.0,819.0,837.0,819.0,866.0,148.0,866.0],"score":0.99,"text":"transport service is independent from the vehicle departure process"},{"category_id":15,"poly":[148.0,868.0,818.0,868.0,818.0,897.0,148.0,897.0],"score":1.0,"text":"of the service. This implies that passengers become incident to the"},{"category_id":15,"poly":[149.0,899.0,817.0,899.0,817.0,925.0,149.0,925.0],"score":0.99,"text":"service at a random time, and thus the instantaneous rate of passen-"},{"category_id":15,"poly":[148.0,928.0,820.0,928.0,820.0,957.0,148.0,957.0],"score":1.0,"text":"ger arrivals to the service is uniform over a given period of time. Let"},{"category_id":15,"poly":[174.0,956.0,214.0,956.0,214.0,990.0,174.0,990.0],"score":1.0,"text":"and"},{"category_id":15,"poly":[239.0,956.0,818.0,956.0,818.0,990.0,239.0,990.0],"score":0.99,"text":"be random variables representing passenger waiting times"},{"category_id":15,"poly":[148.0,988.0,818.0,988.0,818.0,1016.0,148.0,1016.0],"score":1.0,"text":"and service headways, respectively. Under the random incidence"},{"category_id":15,"poly":[149.0,1019.0,818.0,1019.0,818.0,1048.0,149.0,1048.0],"score":0.98,"text":"assumption and the assumption that vehicle capacity is not a binding"},{"category_id":15,"poly":[149.0,1050.0,726.0,1050.0,726.0,1076.0,149.0,1076.0],"score":0.99,"text":"constraint, a classic result of transportation science is that"},{"category_id":15,"poly":[146.0,1793.0,818.0,1793.0,818.0,1822.0,146.0,1822.0],"score":0.98,"text":" Jolliffe and Hutchinson studied bus passenger incidence in South"},{"category_id":15,"poly":[147.0,1825.0,696.0,1825.0,696.0,1852.0,147.0,1852.0],"score":0.97,"text":"London suburbs (5). They observed 10 bus stops for"},{"category_id":15,"poly":[735.0,1825.0,817.0,1825.0,817.0,1852.0,735.0,1852.0],"score":1.0,"text":"perday"},{"category_id":15,"poly":[148.0,1855.0,819.0,1855.0,819.0,1881.0,148.0,1881.0],"score":1.0,"text":"over 8 days, recording the times of passenger incidence and actual"},{"category_id":15,"poly":[148.0,1884.0,819.0,1884.0,819.0,1912.0,148.0,1912.0],"score":0.98,"text":"and scheduled bus departures. They limited their stop selection to"},{"category_id":15,"poly":[146.0,1913.0,819.0,1913.0,819.0,1945.0,146.0,1945.0],"score":1.0,"text":"those served by only a single bus route with a single service pat-"},{"category_id":15,"poly":[147.0,1945.0,819.0,1945.0,819.0,1974.0,147.0,1974.0],"score":0.98,"text":"tern so as to avoid ambiguity about which service a passenger was"},{"category_id":15,"poly":[147.0,1972.0,820.0,1972.0,820.0,2006.0,147.0,2006.0],"score":0.98,"text":"waiting for. The authors found that the actual average passenger"},{"category_id":15,"poly":[149.0,2005.0,323.0,2005.0,323.0,2033.0,149.0,2033.0],"score":0.96,"text":"waitingtimewas"},{"category_id":15,"poly":[374.0,2005.0,819.0,2005.0,819.0,2033.0,374.0,2033.0],"score":1.0,"text":"less than predicted by the random incidence"},{"category_id":15,"poly":[148.0,686.0,625.0,686.0,625.0,721.0,148.0,721.0],"score":0.99,"text":"Random Passenger Incidence Behavior"},{"category_id":15,"poly":[151.0,1434.0,213.0,1434.0,213.0,1462.0,151.0,1462.0],"score":0.99,"text":"where"},{"category_id":15,"poly":[246.0,1434.0,521.0,1434.0,521.0,1462.0,246.0,1462.0],"score":0.98,"text":"is the standard deviation of"},{"category_id":15,"poly":[580.0,1434.0,816.0,1434.0,816.0,1462.0,580.0,1462.0],"score":0.96,"text":".The second expression"},{"category_id":15,"poly":[148.0,1466.0,819.0,1466.0,819.0,1493.0,148.0,1493.0],"score":0.99,"text":"in Equation 1 is particularly useful because it expresses the mean"},{"category_id":15,"poly":[146.0,1496.0,819.0,1496.0,819.0,1525.0,146.0,1525.0],"score":0.99,"text":"passenger waiting time as the sum of two components: the waiting"},{"category_id":15,"poly":[148.0,1526.0,818.0,1526.0,818.0,1553.0,148.0,1553.0],"score":0.98,"text":"time caused by the mean headway (i.e., the reciprocal of service fre-"},{"category_id":15,"poly":[147.0,1557.0,819.0,1557.0,819.0,1584.0,147.0,1584.0],"score":0.99,"text":"quency) and the waiting time caused by the variability of the head-"},{"category_id":15,"poly":[148.0,1588.0,818.0,1588.0,818.0,1612.0,148.0,1612.0],"score":0.97,"text":"ways (which is one measure of service reliability). When the service"},{"category_id":15,"poly":[148.0,1617.0,817.0,1617.0,817.0,1644.0,148.0,1644.0],"score":1.0,"text":"is perfectly reliable with constant headways, the mean waiting time"},{"category_id":15,"poly":[148.0,1646.0,472.0,1646.0,472.0,1677.0,148.0,1677.0],"score":0.99,"text":"will be simply half the headway."},{"category_id":15,"poly":[151.0,176.0,817.0,176.0,817.0,204.0,151.0,204.0],"score":0.99,"text":"dependent on the service headway and the reliability of the departure"},{"category_id":15,"poly":[147.0,205.0,652.0,205.0,652.0,236.0,147.0,236.0],"score":0.99,"text":"time of the service to which passengers are incident."},{"category_id":15,"poly":[149.0,1735.0,702.0,1735.0,702.0,1767.0,149.0,1767.0],"score":0.98,"text":"More Behaviorally Realistic Incidence Models"},{"category_id":15,"poly":[1519.0,98.0,1554.0,98.0,1554.0,125.0,1519.0,125.0],"score":1.0,"text":"53"},{"category_id":15,"poly":[148.0,98.0,322.0,98.0,322.0,123.0,148.0,123.0],"score":1.0,"text":"Frumin and Zhao"}],"page_info":{"page_no":0,"height":2200,"width":1700}}] \ No newline at end of file diff --git a/tests/unittest/test_tools/assets/cli_dev/cli_test_01.pdf b/tests/unittest/test_tools/assets/cli_dev/cli_test_01.pdf deleted file mode 100644 index 229be9ce..00000000 Binary files a/tests/unittest/test_tools/assets/cli_dev/cli_test_01.pdf and /dev/null differ diff --git a/tests/unittest/test_tools/assets/common/cli_test_01.pdf b/tests/unittest/test_tools/assets/common/cli_test_01.pdf deleted file mode 100644 index 229be9ce..00000000 Binary files a/tests/unittest/test_tools/assets/common/cli_test_01.pdf and /dev/null differ diff --git a/tests/unittest/test_tools/test_cli.py b/tests/unittest/test_tools/test_cli.py deleted file mode 100644 index 741a6ab3..00000000 --- a/tests/unittest/test_tools/test_cli.py +++ /dev/null @@ -1,126 +0,0 @@ -import os -import shutil -import tempfile - -from click.testing import CliRunner - -from magic_pdf.tools.cli import cli - - -def test_cli_pdf(): - # setup - unitest_dir = '/tmp/magic_pdf/unittest/tools' - filename = 'cli_test_01' - os.makedirs(unitest_dir, exist_ok=True) - temp_output_dir = tempfile.mkdtemp(dir='/tmp/magic_pdf/unittest/tools') - - # run - runner = CliRunner() - result = runner.invoke( - cli, - [ - '-p', - 'tests/unittest/test_tools/assets/cli/pdf/cli_test_01.pdf', - '-o', - temp_output_dir, - ], - ) - - # check - assert result.exit_code == 0 - - base_output_dir = os.path.join(temp_output_dir, 'cli_test_01/auto') - - r = os.stat(os.path.join(base_output_dir, f'{filename}.md')) - assert r.st_size > 7000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_middle.json')) - assert r.st_size > 200000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_model.json')) - assert r.st_size > 15000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_origin.pdf')) - assert r.st_size > 400000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_layout.pdf')) - assert r.st_size > 400000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_spans.pdf')) - assert r.st_size > 400000 - - assert os.path.exists(os.path.join(base_output_dir, 'images')) is True - assert os.path.isdir(os.path.join(base_output_dir, 'images')) is True - assert os.path.exists(os.path.join(base_output_dir, f'{filename}_content_list.json')) is True - - # teardown - shutil.rmtree(temp_output_dir) - - -def test_cli_path(): - # setup - unitest_dir = '/tmp/magic_pdf/unittest/tools' - os.makedirs(unitest_dir, exist_ok=True) - temp_output_dir = tempfile.mkdtemp(dir='/tmp/magic_pdf/unittest/tools') - - # run - runner = CliRunner() - result = runner.invoke( - cli, ['-p', 'tests/unittest/test_tools/assets/cli/path', '-o', temp_output_dir] - ) - - # check - assert result.exit_code == 0 - - filename = 'cli_test_01' - base_output_dir = os.path.join(temp_output_dir, 'cli_test_01/auto') - - r = os.stat(os.path.join(base_output_dir, f'{filename}.md')) - assert r.st_size > 7000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_middle.json')) - assert r.st_size > 200000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_model.json')) - assert r.st_size > 15000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_origin.pdf')) - assert r.st_size > 400000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_layout.pdf')) - assert r.st_size > 400000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_spans.pdf')) - assert r.st_size > 400000 - - assert os.path.exists(os.path.join(base_output_dir, 'images')) is True - assert os.path.isdir(os.path.join(base_output_dir, 'images')) is True - assert os.path.exists(os.path.join(base_output_dir, f'{filename}_content_list.json')) is True - - base_output_dir = os.path.join(temp_output_dir, 'cli_test_02/auto') - filename = 'cli_test_02' - - r = os.stat(os.path.join(base_output_dir, f'{filename}.md')) - assert r.st_size > 5000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_middle.json')) - assert r.st_size > 200000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_model.json')) - assert r.st_size > 15000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_origin.pdf')) - assert r.st_size > 400000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_layout.pdf')) - assert r.st_size > 400000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_spans.pdf')) - assert r.st_size > 400000 - - assert os.path.exists(os.path.join(base_output_dir, 'images')) is True - assert os.path.isdir(os.path.join(base_output_dir, 'images')) is True - assert os.path.exists(os.path.join(base_output_dir, f'{filename}_content_list.json')) is True - - # teardown - shutil.rmtree(temp_output_dir) diff --git a/tests/unittest/test_tools/test_cli_dev.py b/tests/unittest/test_tools/test_cli_dev.py deleted file mode 100644 index 33ccfba5..00000000 --- a/tests/unittest/test_tools/test_cli_dev.py +++ /dev/null @@ -1,120 +0,0 @@ -import os -import shutil -import tempfile - -from click.testing import CliRunner - -from magic_pdf.tools import cli_dev - - -def test_cli_pdf(): - # setup - unitest_dir = '/tmp/magic_pdf/unittest/tools' - filename = 'cli_test_01' - os.makedirs(unitest_dir, exist_ok=True) - temp_output_dir = tempfile.mkdtemp(dir='/tmp/magic_pdf/unittest/tools') - - # run - runner = CliRunner() - result = runner.invoke( - cli_dev.cli, - [ - 'pdf', - '-p', - 'tests/unittest/test_tools/assets/cli/pdf/cli_test_01.pdf', - '-j', - 'tests/unittest/test_tools/assets/cli_dev/cli_test_01.model.json', - '-o', - temp_output_dir, - ], - ) - - # check - assert result.exit_code == 0 - - base_output_dir = os.path.join(temp_output_dir, 'cli_test_01/auto') - - r = os.stat(os.path.join(base_output_dir, f'{filename}_content_list.json')) - assert r.st_size > 5000 - r = os.stat(os.path.join(base_output_dir, f'{filename}.md')) - assert r.st_size > 7000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_middle.json')) - assert r.st_size > 200000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_model.json')) - assert r.st_size > 15000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_origin.pdf')) - assert r.st_size > 400000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_layout.pdf')) - assert r.st_size > 400000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_spans.pdf')) - assert r.st_size > 400000 - - assert os.path.exists(os.path.join(base_output_dir, 'images')) is True - assert os.path.isdir(os.path.join(base_output_dir, 'images')) is True - - # teardown - shutil.rmtree(temp_output_dir) - - -def test_cli_jsonl(): - # setup - unitest_dir = '/tmp/magic_pdf/unittest/tools' - filename = 'cli_test_01' - os.makedirs(unitest_dir, exist_ok=True) - temp_output_dir = tempfile.mkdtemp(dir='/tmp/magic_pdf/unittest/tools') - - def mock_read_s3_path(s3path): - with open(s3path, 'rb') as f: - return f.read() - - cli_dev.read_s3_path = mock_read_s3_path # mock - - # run - runner = CliRunner() - result = runner.invoke( - cli_dev.cli, - [ - 'jsonl', - '-j', - 'tests/unittest/test_tools/assets/cli_dev/cli_test_01.jsonl', - '-o', - temp_output_dir, - ], - ) - - # check - assert result.exit_code == 0 - - base_output_dir = os.path.join(temp_output_dir, 'cli_test_01/auto') - - r = os.stat(os.path.join(base_output_dir, f'{filename}_content_list.json')) - assert r.st_size > 5000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}.md')) - assert r.st_size > 7000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_middle.json')) - assert r.st_size > 200000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_model.json')) - assert r.st_size > 15000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_origin.pdf')) - assert r.st_size > 400000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_layout.pdf')) - assert r.st_size > 400000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_spans.pdf')) - assert r.st_size > 400000 - - assert os.path.exists(os.path.join(base_output_dir, 'images')) is True - assert os.path.isdir(os.path.join(base_output_dir, 'images')) is True - - # teardown - shutil.rmtree(temp_output_dir) diff --git a/tests/unittest/test_tools/test_common.py b/tests/unittest/test_tools/test_common.py deleted file mode 100644 index a6922540..00000000 --- a/tests/unittest/test_tools/test_common.py +++ /dev/null @@ -1,59 +0,0 @@ -import os -import shutil -import tempfile - -import pytest - -from magic_pdf.tools.common import do_parse - - -@pytest.mark.parametrize('method', ['auto', 'txt', 'ocr']) -def test_common_do_parse(method): - import magic_pdf.model as model_config - model_config.__use_inside_model__ = True - # setup - unitest_dir = '/tmp/magic_pdf/unittest/tools' - filename = 'fake' - os.makedirs(unitest_dir, exist_ok=True) - - temp_output_dir = tempfile.mkdtemp(dir='/tmp/magic_pdf/unittest/tools') - - # run - with open('tests/unittest/test_tools/assets/common/cli_test_01.pdf', 'rb') as f: - bits = f.read() - do_parse(temp_output_dir, - filename, - bits, [], - method, - False, - f_dump_content_list=True) - - # check - base_output_dir = os.path.join(temp_output_dir, f'fake/{method}') - - r = os.stat(os.path.join(base_output_dir, f'{filename}_content_list.json')) - assert r.st_size > 5000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}.md')) - assert r.st_size > 7000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_middle.json')) - assert r.st_size > 200000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_model.json')) - assert r.st_size > 15000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_origin.pdf')) - assert r.st_size > 400000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_layout.pdf')) - assert r.st_size > 400000 - - r = os.stat(os.path.join(base_output_dir, f'{filename}_spans.pdf')) - assert r.st_size > 400000 - - os.path.exists(os.path.join(base_output_dir, 'images')) - os.path.isdir(os.path.join(base_output_dir, 'images')) - - # teardown - shutil.rmtree(temp_output_dir) diff --git a/tests/unittest/test_unit.py b/tests/unittest/test_unit.py deleted file mode 100644 index 37e6af5c..00000000 --- a/tests/unittest/test_unit.py +++ /dev/null @@ -1,542 +0,0 @@ -import os - -import pytest - -from magic_pdf.libs.boxbase import (__is_overlaps_y_exceeds_threshold, - _is_bottom_full_overlap, _is_in, - _is_in_or_part_overlap, - _is_in_or_part_overlap_with_area_ratio, - _is_left_overlap, _is_part_overlap, - _is_vertical_full_overlap, _left_intersect, - _right_intersect, bbox_distance, - bbox_relative_pos, calculate_iou, - calculate_overlap_area_2_minbox_area_ratio, - calculate_overlap_area_in_bbox1_area_ratio, - find_bottom_nearest_text_bbox, - find_left_nearest_text_bbox, - find_right_nearest_text_bbox, - find_top_nearest_text_bbox, - get_bbox_in_boundary, - get_minbox_if_overlap_by_ratio) -from magic_pdf.libs.commons import get_top_percent_list, join_path, mymax -from magic_pdf.libs.config_reader import get_s3_config -from magic_pdf.libs.path_utils import parse_s3path - - -# 输入一个列表,如果列表空返回0,否则返回最大元素 -@pytest.mark.parametrize('list_input, target_num', - [ - ([0, 0, 0, 0], 0), - ([0], 0), - ([1, 2, 5, 8, 4], 8), - ([], 0), - ([1.1, 7.6, 1.009, 9.9], 9.9), - ([1.0 * 10 ** 2, 3.5 * 10 ** 3, 0.9 * 10 ** 6], 0.9 * 10 ** 6), - ]) -def test_list_max(list_input: list, target_num) -> None: - """ - list_input: 输入列表元素,元素均为数字类型 - """ - assert target_num == mymax(list_input) - - -# 连接多个参数生成路径信息,使用"/"作为连接符,生成的结果需要是一个合法路径 -@pytest.mark.parametrize('path_input, target_path', [ - (['https:', '', 'www.baidu.com'], 'https://www.baidu.com'), - (['https:', 'www.baidu.com'], 'https:/www.baidu.com'), - (['D:', 'file', 'pythonProject', 'demo' + '.py'], 'D:/file/pythonProject/demo.py'), -]) -def test_join_path(path_input: list, target_path: str) -> None: - """ - path_input: 输入path的列表,列表元素均为字符串 - """ - assert target_path == join_path(*path_input) - - -# 获取列表中前百分之多少的元素 -@pytest.mark.parametrize('num_list, percent, target_num_list', [ - ([], 0.75, []), - ([-5, -10, 9, 3, 7, -7, 0, 23, -1, -11], 0.8, [23, 9, 7, 3, 0, -1, -5, -7]), - ([-5, -10, 9, 3, 7, -7, 0, 23, -1, -11], 0, []), - ([-5, -10, 9, 3, 7, -7, 0, 23, -1, -11, 28], 0.8, [28, 23, 9, 7, 3, 0, -1, -5]) -]) -def test_get_top_percent_list(num_list: list, percent: float, target_num_list: list) -> None: - """ - num_list: 数字列表,列表元素为数字 - percent: 占比,float, 向下取证 - """ - assert target_num_list == get_top_percent_list(num_list, percent) - - -# 输入一个s3路径,返回bucket名字和其余部分(key) -@pytest.mark.parametrize('s3_path, target_data', [ - ('s3://bucket/path/to/my/file.txt', 'bucket'), - ('s3a://bucket1/path/to/my/file2.txt', 'bucket1'), - # ("/path/to/my/file1.txt", "path"), - # ("bucket/path/to/my/file2.txt", "bucket"), -]) -def test_parse_s3path(s3_path: str, target_data: str): - """ - s3_path: s3路径 - 如果为无效路径,则返回对应的bucket名字和其余部分 - 如果为异常路径 例如:file2.txt,则报异常 - """ - bucket_name, key = parse_s3path(s3_path) - assert target_data == bucket_name - - -# 2个box是否处于包含或者部分重合关系。 -# 如果某边界重合算重合。 -# 部分边界重合,其他在内部也算包含 -@pytest.mark.parametrize('box1, box2, target_bool', [ - ((120, 133, 223, 248), (128, 168, 269, 295), True), - ((137, 53, 245, 157), (134, 11, 200, 147), True), # 部分重合 - ((137, 56, 211, 116), (140, 66, 202, 199), True), # 部分重合 - ((42, 34, 69, 65), (42, 34, 69, 65), True), # 部分重合 - ((39, 63, 87, 106), (37, 66, 85, 109), True), # 部分重合 - ((13, 37, 55, 66), (7, 46, 49, 75), True), # 部分重合 - ((56, 83, 85, 104), (64, 85, 93, 106), True), # 部分重合 - ((12, 53, 48, 94), (14, 53, 50, 94), True), # 部分重合 - ((43, 54, 93, 131), (55, 82, 77, 106), True), # 包含 - ((63, 2, 134, 71), (72, 43, 104, 78), True), # 包含 - ((25, 57, 109, 127), (26, 73, 49, 95), True), # 包含 - ((24, 47, 111, 115), (34, 81, 58, 106), True), # 包含 - ((34, 8, 105, 83), (76, 20, 116, 45), True), # 包含 -]) -def test_is_in_or_part_overlap(box1: tuple, box2: tuple, target_bool: bool) -> None: - """ - box1: 坐标数组 - box2: 坐标数组 - """ - assert target_bool == _is_in_or_part_overlap(box1, box2) - - -# 如果box1在box2内部,返回True -# 如果是部分重合的,则重合面积占box1的比例大于阈值时候返回True -@pytest.mark.parametrize('box1, box2, target_bool', [ - ((35, 28, 108, 90), (47, 60, 83, 96), False), # 包含 box1 up box2, box2 多半,box1少半 - ((65, 151, 92, 177), (49, 99, 105, 198), True), # 包含 box1 in box2 - ((80, 62, 112, 84), (74, 40, 144, 111), True), # 包含 box1 in box2 - ((65, 88, 127, 144), (92, 102, 131, 139), False), # 包含 box2 多半,box1约一半 - ((92, 102, 131, 139), (65, 88, 127, 144), True), # 包含 box1 多半 - ((100, 93, 199, 168), (169, 126, 198, 165), False), # 包含 box2 in box1 - ((26, 75, 106, 172), (65, 108, 90, 128), False), # 包含 box2 in box1 - ((28, 90, 77, 126), (35, 84, 84, 120), True), # 相交 box1多半,box2多半 - ((37, 6, 69, 52), (28, 3, 60, 49), True), # 相交 box1多半,box2多半 - ((94, 29, 133, 60), (84, 30, 123, 61), True), # 相交 box1多半,box2多半 -]) -def test_is_in_or_part_overlap_with_area_ratio(box1: tuple, box2: tuple, target_bool: bool) -> None: - out_bool = _is_in_or_part_overlap_with_area_ratio(box1, box2) - assert target_bool == out_bool - - -# box1在box2内部或者box2在box1内部返回True。如果部分边界重合也算作包含。 -@pytest.mark.parametrize('box1, box2, target_bool', [ - # ((), (), "Error"), # Error - ((65, 151, 92, 177), (49, 99, 105, 198), True), # 包含 box1 in box2 - ((80, 62, 112, 84), (74, 40, 144, 111), True), # 包含 box1 in box2 - ((76, 140, 154, 277), (121, 326, 192, 384), False), # 分离 - ((65, 88, 127, 144), (92, 102, 131, 139), False), # 包含 box2 多半,box1约一半 - ((92, 102, 131, 139), (65, 88, 127, 144), False), # 包含 box1 多半 - ((68, 94, 118, 120), (68, 90, 118, 122), True), # 包含,box1 in box2 两边x相切 - ((69, 94, 118, 120), (68, 90, 118, 122), True), # 包含,box1 in box2 一边x相切 - ((69, 114, 118, 122), (68, 90, 118, 122), True), # 包含,box1 in box2 一边y相切 - # ((100, 93, 199, 168), (169, 126, 198, 165), True), # 包含 box2 in box1 Error - # ((26, 75, 106, 172), (65, 108, 90, 128), True), # 包含 box2 in box1 Error - # ((38, 94, 122, 120), (68, 94, 118, 120), True), # 包含,box2 in box1 两边y相切 Error - # ((68, 34, 118, 158), (68, 94, 118, 120), True), # 包含,box2 in box1 两边x相切 Error - # ((68, 34, 118, 158), (68, 94, 84, 120), True), # 包含,box2 in box1 一边x相切 Error - # ((27, 94, 118, 158), (68, 94, 84, 120), True), # 包含,box2 in box1 一边y相切 Error -]) -def test_is_in(box1: tuple, box2: tuple, target_bool: bool) -> None: - assert target_bool == _is_in(box1, box2) - - -# 仅仅是部分包含关系,返回True,如果是完全包含关系则返回False -@pytest.mark.parametrize('box1, box2, target_bool', [ - ((65, 151, 92, 177), (49, 99, 105, 198), False), # 包含 box1 in box2 - ((80, 62, 112, 84), (74, 40, 144, 111), False), # 包含 box1 in box2 - # ((76, 140, 154, 277), (121, 326, 192, 384), False), # 分离 Error - ((76, 140, 154, 277), (121, 277, 192, 384), True), # 外相切 - ((65, 88, 127, 144), (92, 102, 131, 139), True), # 包含 box2 多半,box1约一半 - ((92, 102, 131, 139), (65, 88, 127, 144), True), # 包含 box1 多半 - ((68, 94, 118, 120), (68, 90, 118, 122), False), # 包含,box1 in box2 两边x相切 - ((69, 94, 118, 120), (68, 90, 118, 122), False), # 包含,box1 in box2 一边x相切 - ((69, 114, 118, 122), (68, 90, 118, 122), False), # 包含,box1 in box2 一边y相切 - # ((26, 75, 106, 172), (65, 108, 90, 128), False), # 包含 box2 in box1 Error - # ((38, 94, 122, 120), (68, 94, 118, 120), False), # 包含,box2 in box1 两边y相切 Error - # ((68, 34, 118, 158), (68, 94, 84, 120), False), # 包含,box2 in box1 一边x相切 Error - -]) -def test_is_part_overlap(box1: tuple, box2: tuple, target_bool: bool) -> None: - assert target_bool == _is_part_overlap(box1, box2) - - -# left_box右侧是否和right_box左侧有部分重叠 -@pytest.mark.parametrize('box1, box2, target_bool', [ - (None, None, False), - ((88, 81, 222, 173), (60, 221, 123, 358), False), # 分离 - ((121, 149, 184, 289), (172, 130, 230, 268), True), # box1 left bottom box2 相交 - ((172, 130, 230, 268), (121, 149, 184, 289), False), # box2 left bottom box1 相交 - ((109, 68, 182, 146), (215, 188, 277, 253), False), # box1 top left box2 分离 - ((117, 53, 222, 176), (174, 142, 298, 276), True), # box1 left top box2 相交 - ((174, 142, 298, 276), (117, 53, 222, 176), False), # box2 left top box1 相交 - ((65, 88, 127, 144), (92, 102, 131, 139), True), # box1 left box2 y:box2 in box1 - ((92, 102, 131, 139), (65, 88, 127, 144), False), # box2 left box1 y:box1 in box2 - ((182, 130, 230, 268), (121, 149, 174, 289), False), # box2 left box1 分离 - ((1, 10, 26, 45), (3, 4, 20, 39), True), # box1 bottom box2 x:box2 in box1 -]) -def test_left_intersect(box1: tuple, box2: tuple, target_bool: bool) -> None: - assert target_bool == _left_intersect(box1, box2) - - -# left_box左侧是否和right_box右侧部分重叠 -@pytest.mark.parametrize('box1, box2, target_bool', [ - (None, None, False), - ((88, 81, 222, 173), (60, 221, 123, 358), False), # 分离 - ((121, 149, 184, 289), (172, 130, 230, 268), False), # box1 left bottom box2 相交 - ((172, 130, 230, 268), (121, 149, 184, 289), True), # box2 left bottom box1 相交 - ((109, 68, 182, 146), (215, 188, 277, 253), False), # box1 top left box2 分离 - ((117, 53, 222, 176), (174, 142, 298, 276), False), # box1 left top box2 相交 - ((174, 142, 298, 276), (117, 53, 222, 176), True), # box2 left top box1 相交 - ((65, 88, 127, 144), (92, 102, 131, 139), False), # box1 left box2 y:box2 in box1 - # ((92, 102, 131, 139), (65, 88, 127, 144), True), # box2 left box1 y:box1 in box2 Error - ((182, 130, 230, 268), (121, 149, 174, 289), False), # box2 left box1 分离 - # ((1, 10, 26, 45), (3, 4, 20, 39), False), # box1 bottom box2 x:box2 in box1 Error -]) -def test_right_intersect(box1: tuple, box2: tuple, target_bool: bool) -> None: - assert target_bool == _right_intersect(box1, box2) - - -# x方向上:要么box1包含box2, 要么box2包含box1。不能部分包含 -# y方向上:box1和box2有重叠 -@pytest.mark.parametrize('box1, box2, target_bool', [ - # (None, None, False), # Error - ((35, 28, 108, 90), (47, 60, 83, 96), True), # box1 top box2, x:box2 in box1, y:有重叠 - ((35, 28, 98, 90), (27, 60, 103, 96), True), # box1 top box2, x:box1 in box2, y:有重叠 - ((57, 77, 130, 210), (59, 219, 119, 293), False), # box1 top box2, x: box2 in box1, y:无重叠 - ((47, 60, 83, 96), (35, 28, 108, 90), True), # box2 top box1, x:box1 in box2, y:有重叠 - ((27, 60, 103, 96), (35, 28, 98, 90), True), # box2 top box1, x:box2 in box1, y:有重叠 - ((59, 219, 119, 293), (57, 77, 130, 210), False), # box2 top box1, x: box1 in box2, y:无重叠 - ((35, 28, 55, 90), (57, 60, 83, 96), False), # box1 top box2, x:无重叠, y:有重叠 - ((47, 60, 63, 96), (65, 28, 108, 90), False), # box2 top box1, x:无重叠, y:有重叠 -]) -def test_is_vertical_full_overlap(box1: tuple, box2: tuple, target_bool: bool) -> None: - assert target_bool == _is_vertical_full_overlap(box1, box2) - - -# 检查box1下方和box2的上方有轻微的重叠,轻微程度收到y_tolerance的限制 -@pytest.mark.parametrize('box1, box2, target_bool', [ - (None, None, False), - ((35, 28, 108, 90), (47, 89, 83, 116), True), # box1 top box2, y:有重叠 - ((35, 28, 108, 90), (47, 60, 83, 96), False), # box1 top box2, y:有重叠且过多 - ((57, 77, 130, 210), (59, 219, 119, 293), False), # box1 top box2, y:无重叠 - ((47, 60, 83, 96), (35, 28, 108, 90), False), # box2 top box1, y:有重叠且过多 - ((27, 89, 103, 116), (35, 28, 98, 90), False), # box2 top box1, y:有重叠 - ((59, 219, 119, 293), (57, 77, 130, 210), False), # box2 top box1, y:无重叠 -]) -def test_is_bottom_full_overlap(box1: tuple, box2: tuple, target_bool: bool) -> None: - assert target_bool == _is_bottom_full_overlap(box1, box2) - - -# 检查box1的左侧是否和box2有重叠 -@pytest.mark.parametrize('box1, box2, target_bool', [ - (None, None, False), - ((88, 81, 222, 173), (60, 221, 123, 358), False), # 分离 - # ((121, 149, 184, 289), (172, 130, 230, 268), False), # box1 left bottom box2 相交 Error - # ((172, 130, 230, 268), (121, 149, 184, 289), True), # box2 left bottom box1 相交 Error - ((109, 68, 182, 146), (215, 188, 277, 253), False), # box1 top left box2 分离 - ((117, 53, 222, 176), (174, 142, 298, 276), False), # box1 left top box2 相交 - # ((174, 142, 298, 276), (117, 53, 222, 176), True), # box2 left top box1 相交 Error - # ((65, 88, 127, 144), (92, 102, 131, 139), False), # box1 left box2 y:box2 in box1 Error - ((1, 10, 26, 45), (3, 4, 20, 39), True), # box1 middle bottom box2 x:box2 in box1 - -]) -def test_is_left_overlap(box1: tuple, box2: tuple, target_bool: bool) -> None: - assert target_bool == _is_left_overlap(box1, box2) - - -# 查两个bbox在y轴上是否有重叠,并且该重叠区域的高度占两个bbox高度更低的那个超过阈值 -@pytest.mark.parametrize('box1, box2, target_bool', [ - # (None, None, "Error"), # Error - ((51, 69, 192, 147), (75, 48, 132, 187), True), # y: box1 in box2 - ((51, 39, 192, 197), (75, 48, 132, 187), True), # y: box2 in box1 - ((88, 81, 222, 173), (60, 221, 123, 358), False), # y: box1 top box2 - ((109, 68, 182, 196), (215, 188, 277, 253), False), # y: box1 top box2 little - ((109, 68, 182, 196), (215, 78, 277, 253), True), # y: box1 top box2 more - ((109, 68, 182, 196), (215, 138, 277, 213), False), # y: box1 top box2 more but lower overlap_ratio_threshold - ((109, 68, 182, 196), (215, 138, 277, 203), True), # y: box1 top box2 more and more overlap_ratio_threshold -]) -def test_is_overlaps_y_exceeds_threshold(box1: tuple, box2: tuple, target_bool: bool) -> None: - assert target_bool == __is_overlaps_y_exceeds_threshold(box1, box2) - - -# Determine the coordinates of the intersection rectangle -@pytest.mark.parametrize('box1, box2, target_num', [ - # (None, None, "Error"), # Error - ((88, 81, 222, 173), (60, 221, 123, 358), 0.0), # 分离 - ((76, 140, 154, 277), (121, 326, 192, 384), 0.0), # 分离 - ((142, 109, 238, 164), (134, 211, 224, 270), 0.0), # 分离 - ((109, 68, 182, 196), (175, 138, 277, 213), 0.024475524475524476), # 相交 - ((56, 90, 170, 219), (103, 212, 171, 304), 0.02288586346557361), # 相交 - ((109, 126, 204, 245), (130, 127, 232, 186), 0.33696071621517326), # 相交 - ((109, 126, 204, 245), (110, 127, 232, 206), 0.5493822593770807), # 相交 - ((76, 140, 154, 277), (121, 277, 192, 384), 0.0) # 相切 -]) -def test_calculate_iou(box1: tuple, box2: tuple, target_num: float) -> None: - assert target_num == calculate_iou(box1, box2) - - -# 计算box1和box2的重叠面积占最小面积的box的比例 -@pytest.mark.parametrize('box1, box2, target_num', [ - # (None, None, "Error"), # Error - ((142, 109, 238, 164), (134, 211, 224, 270), 0.0), # 分离 - ((88, 81, 222, 173), (60, 221, 123, 358), 0.0), # 分离 - ((76, 140, 154, 277), (121, 326, 192, 384), 0.0), # 分离 - ((76, 140, 154, 277), (121, 277, 192, 384), 0.0), # 相切 - ((109, 126, 204, 245), (110, 127, 232, 206), 0.7704918032786885), # 相交 - ((56, 90, 170, 219), (103, 212, 171, 304), 0.07496803069053709), # 相交 - ((121, 149, 184, 289), (172, 130, 230, 268), 0.17841079460269865), # 相交 - ((51, 69, 192, 147), (75, 48, 132, 187), 0.5611510791366906), # 相交 - ((117, 53, 222, 176), (174, 142, 298, 276), 0.12636469221835075), # 相交 - ((102, 60, 233, 203), (70, 190, 220, 319), 0.08188757807078417), # 相交 - ((109, 126, 204, 245), (130, 127, 232, 186), 0.7254901960784313), # 相交 -]) -def test_calculate_overlap_area_2_minbox_area_ratio(box1: tuple, box2: tuple, target_num: float) -> None: - assert target_num == calculate_overlap_area_2_minbox_area_ratio(box1, box2) - - -# 计算box1和box2的重叠面积占bbox1的比例 -@pytest.mark.parametrize('box1, box2, target_num', [ - # (None, None, "Error"), # Error - ((142, 109, 238, 164), (134, 211, 224, 270), 0.0), # 分离 - ((88, 81, 222, 173), (60, 221, 123, 358), 0.0), # 分离 - ((76, 140, 154, 277), (121, 326, 192, 384), 0.0), # 分离 - ((76, 140, 154, 277), (121, 277, 192, 384), 0.0), # 相切 - ((142, 109, 238, 164), (134, 164, 224, 270), 0.0), # 相切 - ((109, 126, 204, 245), (110, 127, 232, 206), 0.6568774878372402), # 相交 - ((56, 90, 170, 219), (103, 212, 171, 304), 0.03189174486604107), # 相交 - ((121, 149, 184, 289), (172, 130, 230, 268), 0.1619047619047619), # 相交 - ((51, 69, 192, 147), (75, 48, 132, 187), 0.40425531914893614), # 相交 - ((117, 53, 222, 176), (174, 142, 298, 276), 0.12636469221835075), # 相交 - ((102, 60, 233, 203), (70, 190, 220, 319), 0.08188757807078417), # 相交 - ((109, 126, 204, 245), (130, 127, 232, 186), 0.38620079610791685), # 相交 -]) -def test_calculate_overlap_area_in_bbox1_area_ratio(box1: tuple, box2: tuple, target_num: float) -> None: - assert target_num == calculate_overlap_area_in_bbox1_area_ratio(box1, box2) - - -# 计算两个bbox重叠的面积占最小面积的box的比例,如果比例大于ratio,则返回小的那个bbox,否则返回None -@pytest.mark.parametrize('box1, box2, ratio, target_box', [ - # (None, None, 0.8, "Error"), # Error - ((142, 109, 238, 164), (134, 211, 224, 270), 0.0, None), # 分离 - ((109, 126, 204, 245), (110, 127, 232, 206), 0.5, (110, 127, 232, 206)), - ((56, 90, 170, 219), (103, 212, 171, 304), 0.5, None), - ((121, 149, 184, 289), (172, 130, 230, 268), 0.5, None), - ((51, 69, 192, 147), (75, 48, 132, 187), 0.5, (75, 48, 132, 187)), - ((117, 53, 222, 176), (174, 142, 298, 276), 0.5, None), - ((102, 60, 233, 203), (70, 190, 220, 319), 0.5, None), - ((109, 126, 204, 245), (130, 127, 232, 186), 0.5, (130, 127, 232, 186)), -]) -def test_get_minbox_if_overlap_by_ratio(box1: tuple, box2: tuple, ratio: float, target_box: list) -> None: - assert target_box == get_minbox_if_overlap_by_ratio(box1, box2, ratio) - - -# 根据boundry获取在这个范围内的所有的box的列表,完全包含关系 -@pytest.mark.parametrize('boxes, boundary, target_boxs', [ - # ([], (), "Error"), # Error - ([], (110, 340, 209, 387), []), - ([(142, 109, 238, 164)], (134, 211, 224, 270), []), # 分离 - ([(109, 126, 204, 245), (110, 127, 232, 206)], (105, 116, 258, 300), [(109, 126, 204, 245), (110, 127, 232, 206)]), - ([(109, 126, 204, 245), (110, 127, 232, 206)], (105, 116, 258, 230), [(110, 127, 232, 206)]), - ([(81, 280, 123, 315), (282, 203, 342, 247), (183, 100, 300, 155), (46, 99, 133, 148), (33, 156, 97, 211), - (137, 29, 287, 87)], (80, 90, 249, 200), []), - ([(81, 280, 123, 315), (282, 203, 342, 247), (183, 100, 300, 155), (46, 99, 133, 148), (33, 156, 97, 211), - (137, 29, 287, 87)], (30, 20, 349, 320), - [(81, 280, 123, 315), (282, 203, 342, 247), (183, 100, 300, 155), (46, 99, 133, 148), (33, 156, 97, 211), - (137, 29, 287, 87)]), - ([(81, 280, 123, 315), (282, 203, 342, 247), (183, 100, 300, 155), (46, 99, 133, 148), (33, 156, 97, 211), - (137, 29, 287, 87)], (30, 20, 200, 320), - [(81, 280, 123, 315), (46, 99, 133, 148), (33, 156, 97, 211)]), -]) -def test_get_bbox_in_boundary(boxes: list, boundary: tuple, target_boxs: list) -> None: - assert target_boxs == get_bbox_in_boundary(boxes, boundary) - - -# 寻找上方距离最近的box,margin 4个单位, x方向有重合,y方向最近的 -@pytest.mark.parametrize('pymu_blocks, obj_box, target_boxs', [ - ([{'bbox': (81, 280, 123, 315)}, {'bbox': (282, 203, 342, 247)}, {'bbox': (183, 100, 300, 155)}, - {'bbox': (46, 99, 133, 148)}, {'bbox': (33, 156, 97, 211)}, - {'bbox': (137, 29, 287, 87)}], (81, 280, 123, 315), {'bbox': (33, 156, 97, 211)}), - # ([{"bbox": (168, 120, 263, 159)}, - # {"bbox": (231, 61, 279, 159)}, - # {"bbox": (35, 85, 136, 110)}, - # {"bbox": (228, 193, 347, 225)}, - # {"bbox": (144, 264, 188, 323)}, - # {"bbox": (62, 37, 126, 64)}], (228, 193, 347, 225), - # [{"bbox": (168, 120, 263, 159)}, {"bbox": (231, 61, 279, 159)}]), # y:方向最近的有两个,x: 两个均有重合 Error - ([{'bbox': (35, 85, 136, 159)}, - {'bbox': (168, 120, 263, 159)}, - {'bbox': (231, 61, 279, 118)}, - {'bbox': (228, 193, 347, 225)}, - {'bbox': (144, 264, 188, 323)}, - {'bbox': (62, 37, 126, 64)}], (228, 193, 347, 225), - {'bbox': (168, 120, 263, 159)},), # y:方向最近的有两个,x:只有一个有重合 - ([{'bbox': (239, 115, 379, 167)}, - {'bbox': (33, 237, 104, 262)}, - {'bbox': (124, 288, 168, 325)}, - {'bbox': (242, 291, 379, 340)}, - {'bbox': (55, 117, 121, 154)}, - {'bbox': (266, 183, 384, 217)}, ], (124, 288, 168, 325), {'bbox': (55, 117, 121, 154)}), - ([{'bbox': (239, 115, 379, 167)}, - {'bbox': (33, 237, 104, 262)}, - {'bbox': (124, 288, 168, 325)}, - {'bbox': (242, 291, 379, 340)}, - {'bbox': (55, 117, 119, 154)}, - {'bbox': (266, 183, 384, 217)}, ], (124, 288, 168, 325), None), # x没有重合 - ([{'bbox': (80, 90, 249, 200)}, - {'bbox': (183, 100, 240, 155)}, ], (183, 100, 240, 155), None), # 包含 -]) -def test_find_top_nearest_text_bbox(pymu_blocks: list, obj_box: tuple, target_boxs: dict) -> None: - assert target_boxs == find_top_nearest_text_bbox(pymu_blocks, obj_box) - - -# 寻找下方距离自己最近的box, x方向有重合,y方向最近的 -@pytest.mark.parametrize('pymu_blocks, obj_box, target_boxs', [ - ([{'bbox': (165, 96, 300, 114)}, - {'bbox': (11, 157, 139, 201)}, - {'bbox': (124, 208, 265, 262)}, - {'bbox': (124, 283, 248, 306)}, - {'bbox': (39, 267, 84, 301)}, - {'bbox': (36, 89, 114, 145)}, ], (165, 96, 300, 114), {'bbox': (124, 208, 265, 262)}), - ([{'bbox': (187, 37, 303, 49)}, - {'bbox': (2, 227, 90, 283)}, - {'bbox': (158, 174, 200, 212)}, - {'bbox': (259, 174, 324, 228)}, - {'bbox': (205, 61, 316, 97)}, - {'bbox': (295, 248, 374, 287)}, ], (205, 61, 316, 97), {'bbox': (259, 174, 324, 228)}), # y有两个最近的, x只有一个重合 - # ([{"bbox": (187, 37, 303, 49)}, - # {"bbox": (2, 227, 90, 283)}, - # {"bbox": (259, 174, 324, 228)}, - # {"bbox": (205, 61, 316, 97)}, - # {"bbox": (295, 248, 374, 287)}, - # {"bbox": (158, 174, 209, 212)}, ], (205, 61, 316, 97), - # [{"bbox": (259, 174, 324, 228)}, {"bbox": (158, 174, 209, 212)}]), # x有重合,y有两个最近的 Error - ([{'bbox': (287, 132, 398, 191)}, - {'bbox': (44, 141, 163, 188)}, - {'bbox': (132, 191, 240, 241)}, - {'bbox': (81, 25, 142, 67)}, - {'bbox': (74, 297, 116, 314)}, - {'bbox': (77, 84, 224, 107)}, ], (287, 132, 398, 191), None), # x没有重合 - ([{'bbox': (80, 90, 249, 200)}, - {'bbox': (183, 100, 240, 155)}, ], (183, 100, 240, 155), None), # 包含 -]) -def test_find_bottom_nearest_text_bbox(pymu_blocks: list, obj_box: tuple, target_boxs: dict) -> None: - assert target_boxs == find_bottom_nearest_text_bbox(pymu_blocks, obj_box) - - -# 寻找左侧距离自己最近的box, y方向有重叠,x方向最近 -@pytest.mark.parametrize('pymu_blocks, obj_box, target_boxs', [ - ([{'bbox': (80, 90, 249, 200)}, {'bbox': (183, 100, 240, 155)}], (183, 100, 240, 155), None), # 包含 - ([{'bbox': (28, 90, 77, 126)}, {'bbox': (35, 84, 84, 120)}], (35, 84, 84, 120), None), # y:重叠,x:重叠大于2 - ([{'bbox': (28, 90, 77, 126)}, {'bbox': (75, 84, 134, 120)}], (75, 84, 134, 120), {'bbox': (28, 90, 77, 126)}), - # y:重叠,x:重叠小于等于2 - ([{'bbox': (239, 115, 379, 167)}, - {'bbox': (33, 237, 104, 262)}, - {'bbox': (124, 288, 168, 325)}, - {'bbox': (242, 291, 379, 340)}, - {'bbox': (55, 113, 161, 154)}, - {'bbox': (266, 123, 384, 217)}], (266, 123, 384, 217), {'bbox': (55, 113, 161, 154)}), # y重叠,x left - # ([{"bbox": (136, 219, 268, 240)}, - # {"bbox": (169, 115, 268, 181)}, - # {"bbox": (33, 237, 104, 262)}, - # {"bbox": (124, 288, 168, 325)}, - # {"bbox": (55, 117, 161, 154)}, - # {"bbox": (266, 183, 384, 217)}], (266, 183, 384, 217), - # [{"bbox": (136, 219, 267, 240)}, {"bbox": (169, 115, 267, 181)}]), # y有重叠,x重叠小于2或者在left Error -]) -def test_find_left_nearest_text_bbox(pymu_blocks: list, obj_box: tuple, target_boxs: dict) -> None: - assert target_boxs == find_left_nearest_text_bbox(pymu_blocks, obj_box) - - -# 寻找右侧距离自己最近的box, y方向有重叠,x方向最近 -@pytest.mark.parametrize('pymu_blocks, obj_box, target_boxs', [ - ([{'bbox': (80, 90, 249, 200)}, {'bbox': (183, 100, 240, 155)}], (183, 100, 240, 155), None), # 包含 - ([{'bbox': (28, 90, 77, 126)}, {'bbox': (35, 84, 84, 120)}], (28, 90, 77, 126), None), # y:重叠,x:重叠大于2 - ([{'bbox': (28, 90, 77, 126)}, {'bbox': (75, 84, 134, 120)}], (28, 90, 77, 126), {'bbox': (75, 84, 134, 120)}), - # y:重叠,x:重叠小于等于2 - ([{'bbox': (239, 115, 379, 167)}, - {'bbox': (33, 237, 104, 262)}, - {'bbox': (124, 288, 168, 325)}, - {'bbox': (242, 291, 379, 340)}, - {'bbox': (55, 113, 161, 154)}, - {'bbox': (266, 123, 384, 217)}], (55, 113, 161, 154), {'bbox': (239, 115, 379, 167)}), # y重叠,x right - # ([{"bbox": (169, 115, 298, 181)}, - # {"bbox": (169, 219, 268, 240)}, - # {"bbox": (33, 177, 104, 262)}, - # {"bbox": (124, 288, 168, 325)}, - # {"bbox": (55, 117, 161, 154)}, - # {"bbox": (266, 183, 384, 217)}], (33, 177, 104, 262), - # [{"bbox": (169, 115, 298, 181)}, {"bbox": (169, 219, 268, 240)}]), # y有重叠,x重叠小于2或者在right Error -]) -def test_find_right_nearest_text_bbox(pymu_blocks: list, obj_box: tuple, target_boxs: dict) -> None: - assert target_boxs == find_right_nearest_text_bbox(pymu_blocks, obj_box) - - -# 判断两个矩形框的相对位置关系 (left, right, bottom, top) -@pytest.mark.parametrize('box1, box2, target_box', [ - # (None, None, "Error"), # Error - ((80, 90, 249, 200), (183, 100, 240, 155), (False, False, False, False)), # 包含 - # ((124, 81, 222, 173), (60, 221, 123, 358), (False, True, False, True)), # 分离,右上 Error - ((142, 109, 238, 164), (134, 211, 224, 270), (False, False, False, True)), # 分离,上 - # ((51, 69, 192, 147), (205, 198, 282, 297), (True, False, False, True)), # 分离,左上 Error - # ((101, 149, 164, 289), (172, 130, 230, 268), (True, False, False, False)), # 分离,左 Error - # ((69, 196, 124, 285), (130, 127, 232, 186), (True, False, True, False)), # 分离,左下 Error - ((103, 212, 171, 304), (56, 90, 170, 209), (False, False, True, False)), # 分离,下 - # ((124, 367, 222, 415), (60, 221, 123, 358), (False, True, True, False)), # 分离,右下 Error - # ((172, 130, 230, 268), (101, 149, 164, 289), (False, True, False, False)), # 分离,右 Error -]) -def test_bbox_relative_pos(box1: tuple, box2: tuple, target_box: tuple) -> None: - assert target_box == bbox_relative_pos(box1, box2) - - -# 计算两个矩形框的距离 -""" -受bbox_relative_pos方法的影响,左右相反,这里计算结果全部受影响,在错误的基础上计算出了正确的结果 -""" - - -@pytest.mark.parametrize('box1, box2, target_num', [ - # (None, None, "Error"), # Error - ((80, 90, 249, 200), (183, 100, 240, 155), 0.0), # 包含 - ((142, 109, 238, 164), (134, 211, 224, 270), 47.0), # 分离,上 - ((103, 212, 171, 304), (56, 90, 170, 209), 3.0), # 分离,下 - ((101, 149, 164, 289), (172, 130, 230, 268), 8.0), # 分离,左 - ((172, 130, 230, 268), (101, 149, 164, 289), 8.0), # 分离,右 - ((80.3, 90.8, 249.0, 200.5), (183.8, 100.6, 240.2, 155.1), 0.0), # 包含 - ((142.3, 109.5, 238.9, 164.2), (134.4, 211.2, 224.8, 270.1), 47.0), # 分离,上 - ((103.5, 212.6, 171.1, 304.8), (56.1, 90.9, 170.6, 209.2), 3.4), # 分离,下 - ((101.1, 149.3, 164.9, 289.0), (172.1, 130.1, 230.5, 268.5), 7.2), # 分离,左 - ((172.1, 130.3, 230.1, 268.1), (101.2, 149.9, 164.3, 289.1), 7.8), # 分离,右 - ((124.3, 81.1, 222.5, 173.8), (60.3, 221.5, 123.0, 358.9), 47.717711596429254), # 分离,右上 - ((51.2, 69.31, 192.5, 147.9), (205.0, 198.1, 282.98, 297.09), 51.73287156151299), # 分离,左上 - ((124.3, 367.1, 222.9, 415.7), (60.9, 221.4, 123.2, 358.6), 8.570880934886448), # 分离,右下 - ((69.9, 196.2, 124.1, 285.7), (130.0, 127.3, 232.6, 186.1), 11.69700816448377), # 分离,左下 -]) -def test_bbox_distance(box1: tuple, box2: tuple, target_num: float) -> None: - assert target_num - bbox_distance(box1, box2) < 1 - - -@pytest.mark.skip(reason='skip') -# 根据bucket_name获取s3配置ak,sk,endpoint -def test_get_s3_config() -> None: - bucket_name = os.getenv('bucket_name') - target_data = os.getenv('target_data') - assert convert_string_to_list(target_data) == list(get_s3_config(bucket_name)) - - -def convert_string_to_list(s): - cleaned_s = s.strip("'") - items = cleaned_s.split(',') - cleaned_items = [item.strip() for item in items] - return cleaned_items