修改为东南天坐标系
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
from typing import List, Optional
|
||||
|
||||
from unstructured.logger import logger
|
||||
from unstructured.partition.utils.constants import PartitionStrategy
|
||||
from unstructured.utils import dependency_exists
|
||||
|
||||
|
||||
def validate_strategy(strategy: str, is_image: bool = False):
|
||||
"""Determines if the strategy is valid for the specified filetype."""
|
||||
|
||||
valid_strategies = [
|
||||
PartitionStrategy.AUTO,
|
||||
PartitionStrategy.FAST,
|
||||
PartitionStrategy.OCR_ONLY,
|
||||
PartitionStrategy.HI_RES,
|
||||
]
|
||||
if strategy not in valid_strategies:
|
||||
raise ValueError(f"{strategy} is not a valid strategy.")
|
||||
|
||||
if strategy == PartitionStrategy.FAST and is_image:
|
||||
raise ValueError("The fast strategy is not available for image files.")
|
||||
|
||||
|
||||
def determine_pdf_or_image_strategy(
|
||||
strategy: str,
|
||||
is_image: bool = False,
|
||||
pdf_text_extractable: bool = False,
|
||||
infer_table_structure: bool = False,
|
||||
extract_images_in_pdf: bool = False,
|
||||
extract_image_block_types: Optional[List[str]] = None,
|
||||
):
|
||||
"""Determines what strategy to use for processing PDFs or images, accounting for fallback
|
||||
logic if some dependencies are not available."""
|
||||
pytesseract_installed = dependency_exists("unstructured_pytesseract")
|
||||
unstructured_inference_installed = dependency_exists("unstructured_inference")
|
||||
|
||||
if strategy == PartitionStrategy.AUTO:
|
||||
extract_element = extract_images_in_pdf or bool(extract_image_block_types)
|
||||
if is_image:
|
||||
strategy = _determine_image_auto_strategy()
|
||||
else:
|
||||
strategy = _determine_pdf_auto_strategy(
|
||||
pdf_text_extractable=pdf_text_extractable,
|
||||
infer_table_structure=infer_table_structure,
|
||||
extract_element=extract_element,
|
||||
)
|
||||
|
||||
if all(
|
||||
[not unstructured_inference_installed, not pytesseract_installed, not pdf_text_extractable],
|
||||
):
|
||||
raise ValueError(
|
||||
"unstructured_inference is not installed, pytesseract is not installed "
|
||||
"and the text of the PDF is not extractable. "
|
||||
"To process this file, install unstructured_inference, install pytesseract, "
|
||||
"or remove copy protection from the PDF.",
|
||||
)
|
||||
|
||||
if strategy == PartitionStrategy.HI_RES and not unstructured_inference_installed:
|
||||
logger.warning(
|
||||
"unstructured_inference is not installed. Cannot use the hi_res partitioning "
|
||||
"strategy. Falling back to partitioning with another strategy.",
|
||||
)
|
||||
# NOTE(robinson) - fallback to ocr_only if possible because it is the most
|
||||
# similar to hi_res
|
||||
if pytesseract_installed:
|
||||
logger.warning("Falling back to partitioning with ocr_only.")
|
||||
return PartitionStrategy.OCR_ONLY
|
||||
else:
|
||||
logger.warning("Falling back to partitioning with fast.")
|
||||
return PartitionStrategy.FAST
|
||||
|
||||
elif strategy == PartitionStrategy.OCR_ONLY and not pytesseract_installed:
|
||||
logger.warning(
|
||||
"pytesseract is not installed. Cannot use the ocr_only partitioning "
|
||||
"strategy. Falling back to partitioning with another strategy.",
|
||||
)
|
||||
if pdf_text_extractable:
|
||||
logger.warning("Falling back to partitioning with fast.")
|
||||
return PartitionStrategy.FAST
|
||||
else:
|
||||
logger.warning("Falling back to partitioning with hi_res.")
|
||||
return PartitionStrategy.HI_RES
|
||||
|
||||
return strategy
|
||||
|
||||
|
||||
def _determine_image_auto_strategy():
|
||||
"""If "auto" is passed in as the strategy, determines what strategy to use
|
||||
for images."""
|
||||
# Use hi_res as the only default since images are only about one page
|
||||
return PartitionStrategy.HI_RES
|
||||
|
||||
|
||||
def _determine_pdf_auto_strategy(
|
||||
pdf_text_extractable: bool = False,
|
||||
infer_table_structure: bool = False,
|
||||
extract_element: bool = False,
|
||||
):
|
||||
"""If "auto" is passed in as the strategy, determines what strategy to use
|
||||
for PDFs."""
|
||||
# NOTE(robinson) - Currently "hi_res" is the only strategy where
|
||||
# infer_table_structure and extract_images_in_pdf are used.
|
||||
if infer_table_structure or extract_element:
|
||||
return PartitionStrategy.HI_RES
|
||||
|
||||
if pdf_text_extractable:
|
||||
return PartitionStrategy.FAST
|
||||
else:
|
||||
return PartitionStrategy.OCR_ONLY
|
||||
Reference in New Issue
Block a user