Mi información de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
En el contenido actualizado de este artículo, las imágenes y los archivos PDF escaneados también pueden admitir la extracción por lotes del contenido del área especificada. Esto se logra principalmente tomando capturas de pantalla del área especificada y luego usando OCR para identificar el texto en el área, por lo que es posible que no haya precisión. será suficiente, pero si es digital, no es un gran problema, por lo que es mejor extraer la versión puramente electrónica del archivo PDF para obtener el mejor efecto;
Requisito 1: Si tengo una gran cantidad de documentos electrónicos PDF del mismo formato, necesito extraer números o texto en áreas específicas.
Requisito 2: Tengo un lote de documentos PDF, pero los nombres de los archivos están confusos. Necesito cambiar el nombre de estos archivos por lotes según el texto del título de la primera línea de la primera página del archivo PDF.
Nota: No apto para escenarios: si las ubicaciones de las áreas que deben extraerse de varios archivos PDF son diferentes, por ejemplo, el número que quiero extraer está en las coordenadas de (30, 30) en el primer archivo PDF, y el resultado cambia en el segundo archivo, si se convierte en la coordenada de (35, 35), entonces el software no podrá extraer el texto del contenido muy bien, por lo que el ámbito de aplicación de este código es que tienen varios documentos PDF. El mismo formato y las posiciones del PDF donde se encuentra la información de texto que debe extraerse son básicamente las mismas.
Idea 1: seleccionamos aleatoriamente un archivo PDF como muestra y luego usamos código para marcar las áreas que se extraerán con cuadros y luego guardamos las coordenadas de estas áreas. Al procesar cada PDF en lotes, usaremos las coordenadas regionales guardadas. para extraer texto o números correspondientes a la ubicación
Diagrama esquemático de ideas:
El diagrama de resultado final:
Los defectos de esta idea y los puntos que necesitan atención:
1 La ubicación de los datos que se extraerán de cada archivo procesado por lotes debe ser la misma. Por ejemplo, el número que se extraerá del primer archivo PDF se ubica en las coordenadas [100, 100], luego el número que se extraerá. Los datos extraídos de cada archivo posterior deben ubicarse en las coordenadas [100, 100]. Si esta posición cambia, los datos requeridos no se extraerán hasta cierto punto. Este problema se puede resolver ampliando el rango de coordenadas del área.
2. Si el texto extraído está incompleto, significa que el cuadro seleccionado puede ser un poco más pequeño. He configurado una función en mi código para aumentar el tamaño de un área determinada individualmente.
Requisito 2 Idea: Los nombres de un lote de documentos PDF están confusos. Necesito cambiar el nombre de estos archivos en lotes según el título de la primera página del archivo PDF. Archivo PDF y luego obtenga la primera línea del contenido del archivo PDF y luego cambie el nombre del archivo. Este código no es complicado, por lo que no se incluye en esta página.
Código:
- from typing import Optional, Dict, List
-
- from solapi.magic_eden.site_api.utils.consts import MEAPIUrls
- from solapi.magic_eden.site_api.utils.data import collection_stats_cleaner, collection_info_cleaner,
- collection_list_stats_cleaner
- from solapi.magic_eden.site_api.utils.types import MECollectionStats, MECollectionInfo, MECollectionMetrics
- from solapi.utils.api import BaseApi
-
-
-
- class MagicEdenCollectionApi(BaseApi):
-
- def get_collection_stats_dirty(self, symbol: str) -> Optional[Dict]:
- url = f'{MEAPIUrls.COLLECTION_STATS}{symbol}'
- res = self._get_request(url)
- return res.get('results') if isinstance(res, dict) else None
-
- def get_collection_info_dirty(self, symbol: str) -> Optional[Dict]:
- url = f'{MEAPIUrls.COLLECTION_INFO}{symbol}'
- res = self._get_request(url)
- return res if bool(res) else None
-
- def get_collection_stats(self, symbol: str) -> Optional[MECollectionStats]:
- data = self.get_collection_stats_dirty(symbol)
- if data:
- return collection_stats_cleaner(data)
-
- def get_collection_info(self, symbol: str) -> Optional[MECollectionInfo]:
- data = self.get_collection_info_dirty(symbol)
- if data:
- return collection_info_cleaner(data)
-
- def get_collection_list_stats_dirty(self):
- url = MEAPIUrls.COLLECTION_LIST_STATS
- res = self._get_request(url)
- return res.get('results') if isinstance(res, dict) else None
-
- def get_collection_list_stats(self) -> Optional[List[MECollectionMetrics]]:
- data = self.get_collection_list_stats_dirty()
- if data:
- return list(map(lambda x: collection_list_stats_cleaner(x), data))
-
- def get_collection_list_dirty(self):
- url = MEAPIUrls.COLLECTION_LIST
- res = self._get_request(url)
- return res.get('collections') if isinstance(res, dict) else None
-
- def get_collection_list(self) -> Optional[List[MECollectionInfo]]:
- data = self.get_collection_list_dirty()
- if data:
- return list(map(lambda x: collection_info_cleaner(x), data))
Enlace de descarga del código:
Enlace: https://pan.baidu.com/s/1WQQ8kaDilaagjoK5IrYZzA
Código de extracción: 1111