# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Tests for entity extraction.""" import json import document_processing FORM_10_Q_URI = "gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs/2021Q1_alphabet_earnings_release.pdf" FORM_10_K_URI = "gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs/2021_alphabet_annual_report.pdf" FORM_10_Q_DIRTY_URI = "gs://arielj-argolis-1-docs/alphabet/augmented_output_3.pdf" def test_extract_from_document_10_q() -> None: extract_config_id = "form_10_q" document_uri = FORM_10_Q_URI expected_response = """\ { "year": "2021", "quarter": "Q1", "company_name": "Alphabet Inc.", "ceo": "Sundar Pichai", "net_income_millions": "17930", "net_income_previous_year_millions": "6836" } """ response = document_processing.extract_from_document( extract_config_id=extract_config_id, document_uri=document_uri ) print(response) assert json.loads(response) == json.loads(expected_response) def test_extract_from_document_10_k() -> None: extract_config_id = "form_10_k" document_uri = FORM_10_K_URI expected_response = """\ { "year": "2021", "company_name": "Alphabet Inc.", "ceo": "Sundar Pichai", "net_income_millions": "76033" } """ response = document_processing.extract_from_document( extract_config_id=extract_config_id, document_uri=document_uri ) print(response) assert json.loads(response) == json.loads(expected_response) def test_classify_document() -> None: document_uri = FORM_10_Q_URI expected_response = """\ { "class": "form_10_q" } """ response = document_processing.classify_document(document_uri=document_uri) print(response) assert json.loads(response) == json.loads(expected_response) def test_classify_and_extract_document() -> None: document_uri = FORM_10_Q_URI expected_response = """\ { "year": "2021", "quarter": "Q1", "company_name": "Alphabet Inc.", "ceo": "Sundar Pichai", "net_income_millions": "17930", "net_income_previous_year_millions": "6836" } """ response = ( document_processing.classify_and_extract_document(document_uri=document_uri) ) print(response) assert json.loads(response) == json.loads(expected_response) def test_evaluate_quality_and_extract_high_quality_document() -> None: document_uri = FORM_10_Q_URI extract_config_id = "form_10_q" expected_response = """\ { "year": "2021", "quarter": "Q1", "company_name": "Alphabet Inc.", "ceo": "Sundar Pichai", "net_income_millions": "17930", "net_income_previous_year_millions": "6836" } """ response = ( document_processing.evaluate_quality_and_extract( extract_config_id=extract_config_id, document_uri=document_uri ) ) print(response) assert json.loads(response) == json.loads(expected_response) def test_evaluate_quality_and_extract_low_quality_document() -> None: document_uri = FORM_10_Q_DIRTY_URI extract_config_id = "form_10_q" expected_response = """\ { "year": "2021", "quarter": "Q1", "company_name": "Alphabet Inc.", "ceo": "Sundar Pichai", "net_income_millions": 17930, "net_income_previous_year_millions": 6836 } """ response = ( document_processing.evaluate_quality_and_extract( extract_config_id=extract_config_id, document_uri=document_uri ) ) print("response from model") print(response) assert json.loads(response) == json.loads(expected_response) if __name__ == "__main__": test_extract_from_document_10_q() test_extract_from_document_10_k() test_classify_document() test_classify_and_extract_document() test_evaluate_quality_and_extract_high_quality_document() test_evaluate_quality_and_extract_low_quality_document() print("All tests passed!")