Teknologian jakaminen

Eräpoimi tiettyjen PDF-alueiden sisältö Exceliin ja nimeä automaattisesti v1.3 uudelleen PDF-tiedoston ensimmäisen tekstirivin perusteella ideoiden ja koodin toteutuksen kanssa

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Tämän artikkelin päivitetyssä sisällössä kuvat ja skannatut PDF-tiedostot voivat myös tukea tietyn alueen sisällön eräpoimimista. Tämä saavutetaan pääasiassa ottamalla kuvakaappauksia määritetystä alueesta ja käyttämällä sitten tekstintunnistusta alueen tekstin tunnistamiseen, joten tarkkuus ei välttämättä ole mahdollista. riittää, mutta jos se on digitaalinen, se ei ole suuri ongelma, joten on parasta purkaa PDF-tiedoston puhtaasti sähköinen versio parhaan tuloksen saavuttamiseksi.


Vaatimus 1: Jos minulla on suuri määrä samanmuotoisia PDF-sähköisiä asiakirjoja, minun on poimittava numerot tai teksti tietyiltä alueilta.

Vaatimus 2: Minulla on joukko PDF-dokumentteja, mutta kaikkien tiedostojen nimet ovat sekaisin, minun on nimettävä nämä tiedostot uudelleen PDF-tiedoston ensimmäisen sivun ensimmäisen rivin otsikkotekstin perusteella.

Huomautus: Ei sovellu skenaarioihin: Jos useista PDF-tiedostoista purettavien alueiden sijainnit ovat erilaisia, esimerkiksi numero, jonka haluan purkaa, on ensimmäisen PDF-tiedoston koordinaateissa (30, 30), ja tulos muuttuu toisessa tiedostossa. Jos siitä tulee (35, 35) koordinaatti, ohjelmisto ei pysty poimimaan sisältötekstiä kovin hyvin, joten tämän koodin käyttöalue on, että useissa PDF-dokumenteissa on. samassa muodossa, ja PDF-paikat, joissa poimittavat tekstitiedot sijaitsevat, ovat periaatteessa samat.

Idea 1: Valitsemme satunnaisesti PDF-tiedoston näytteeksi ja merkitsemme sitten koodilla poimittavat alueet laatikoilla ja tallennamme sitten näiden alueiden koordinaatit Käsitellessämme jokaista PDF-tiedostoa erissä, käytämme tallennettuja aluekoordinaatteja poimimaan sijaintia vastaavan tekstin tai numerot

Ideakaavio:

Lopputuloskaavio:

Tämän idean puutteet ja huomioita vaativat kohdat:

1 Jokaisesta eräkäsitellystä tiedostosta erotettavien tietojen sijainnin on oltava sama. Esimerkiksi ensimmäisestä PDF-tiedostosta poimittava numero sijaitsee koordinaateissa [100, 100], sitten numero, joka on purettava. jokaisesta seuraavasta tiedostosta poimitut tiedot on sijoitettava koordinaattien [100, 100] kohdalle.

2. Jos poimittu teksti on epätäydellinen, se tarkoittaa, että valittu laatikko voi olla hieman pienempi. Olen asettanut koodiin toiminnon, joka lisää tietyn alueen kokoa yksitellen.


Vaatimus 2 Idea: PDF-dokumenttien nimet ovat sekaisin. Minun täytyy nimetä nämä tiedostot uudelleen PDF-tiedoston ensimmäisen sivun otsikon perusteella PDF-tiedosto ja hanki sitten PDF-tiedoston ensimmäinen rivi ja nimeä tiedosto uudelleen. Tämä koodi ei ole monimutkainen, joten se ei sisälly tähän sivuun.

Koodi:

  1. from typing import Optional, Dict, List
  2. from solapi.magic_eden.site_api.utils.consts import MEAPIUrls
  3. from solapi.magic_eden.site_api.utils.data import collection_stats_cleaner, collection_info_cleaner,
  4. collection_list_stats_cleaner
  5. from solapi.magic_eden.site_api.utils.types import MECollectionStats, MECollectionInfo, MECollectionMetrics
  6. from solapi.utils.api import BaseApi
  7. class MagicEdenCollectionApi(BaseApi):
  8. def get_collection_stats_dirty(self, symbol: str) -> Optional[Dict]:
  9. url = f'{MEAPIUrls.COLLECTION_STATS}{symbol}'
  10. res = self._get_request(url)
  11. return res.get('results') if isinstance(res, dict) else None
  12. def get_collection_info_dirty(self, symbol: str) -> Optional[Dict]:
  13. url = f'{MEAPIUrls.COLLECTION_INFO}{symbol}'
  14. res = self._get_request(url)
  15. return res if bool(res) else None
  16. def get_collection_stats(self, symbol: str) -> Optional[MECollectionStats]:
  17. data = self.get_collection_stats_dirty(symbol)
  18. if data:
  19. return collection_stats_cleaner(data)
  20. def get_collection_info(self, symbol: str) -> Optional[MECollectionInfo]:
  21. data = self.get_collection_info_dirty(symbol)
  22. if data:
  23. return collection_info_cleaner(data)
  24. def get_collection_list_stats_dirty(self):
  25. url = MEAPIUrls.COLLECTION_LIST_STATS
  26. res = self._get_request(url)
  27. return res.get('results') if isinstance(res, dict) else None
  28. def get_collection_list_stats(self) -> Optional[List[MECollectionMetrics]]:
  29. data = self.get_collection_list_stats_dirty()
  30. if data:
  31. return list(map(lambda x: collection_list_stats_cleaner(x), data))
  32. def get_collection_list_dirty(self):
  33. url = MEAPIUrls.COLLECTION_LIST
  34. res = self._get_request(url)
  35. return res.get('collections') if isinstance(res, dict) else None
  36. def get_collection_list(self) -> Optional[List[MECollectionInfo]]:
  37. data = self.get_collection_list_dirty()
  38. if data:
  39. return list(map(lambda x: collection_info_cleaner(x), data))

Koodin latauslinkki:

Linkki: https://pan.baidu.com/s/1WQQ8kaDilaagjoK5IrYZzA

Poistokoodi: 1111