Страницы: 1 2 След.
RSS
Сбор данных из PDF файла, Сбор данных из pdf файла чека при помощи power query
 
Здравствуйте, у меня сложный вопрос возможно ли подредактировать мой файл excel, чтобы в один список попадали данные из файла pdf чека в excel.

В моем прикрепленном файле пример (excel) работает на большинство чеков, но встретились чеки в которых данные расположены по другим столбцам чем тот, что я взял за основу и у меня выходит ошибка или данные не высвечиваются. Либо если взять сбер чеки в одном есть возможность открытия в 2-х разных форматах таблиц, а в другом только один вариант.
-----
Помогите пожалуйста с решением данной задачи, уже много информации перерыл, подобного не нашел, и так как я далек от правильного написания кода, мне очень нужна Ваша помощь, заранее спасибо  
 
В порядке варианта/идеи:

Попробуйте в чат gpt загрузить до 10 файлов pdf, напишите какие данные Вам нужны и попросите выдать их в таблице эксель.
Попробовал с одним файлом - он по моей просьбе сразу мне выдал сумму и дату. Кстати, можете указать в каком формате выдать даты
Изменено: DAB - 07.07.2024 00:39:52
 
Цитата
написал:
Попробуйте в чат gpt загрузить до 10 файлов pdf, напишите какие данные Вам нужны и попросите выдать их в таблице эксель.Попробовал с одним файлом - он по моей просьбе сразу мне выдал сумму и дату. Кстати, можете указать в каком формате выдать даты
мне так не подходит, у меня за раз файлов может быть больше 100 шт
и заморачиваться со сторонним ресурсом тем более чеками их куда то в интернет отправлять очень не хочется, мне нужно отредактировать в файле формулу
 
Если уж нужно именно через Power Query, то в случае разных столбцов обычно помогает объединять их в единый. Например, если нужные данные получаются "рандомно" в столбцах с 8 по 11, то их и объединяем.
А вообще в десять раз проще и быстрее воспользоваться тем же питоном и регулярными выражениями.
 
Александр, сберовские чеки кладите в отдельную папку и примерно вот так их
Код
let
    sber = (bin as binary) => 
        [slip = Pdf.Tables(bin, [Implementation="1.3"]){[Id="Page001"]}[Data],
        to_list = List.Buffer(Table.ToList(slip, (x) => List.RemoveNulls(x){0})),
        to_text = 
            "оплатил " & 
            Text.TrimEnd(to_list{List.PositionOf(to_list, "Сумма перевода") + 1}?, {" ", "₽"}) & 
            " руб. (на карту) - " &
            to_list{1}
        ][to_text],
    sber_files = Folder.Files("путь_к_сберовской_папке")[[Name], [Content]],
    trn = Table.TransformColumns(sber_files, {"Content", sber})
in
    trn

меняйте под ваши нужды (можно дату "вытянуть", сумму в один формат преобразовать, номер п/п добавить...). Тинькова нужно, наверное, в другую папку класть и другую функцию писать.
Пришелец-прораб.
 
Цитата
написал:
let
   sber = (bin as binary) =>
       [slip = Pdf.Tables(bin, [Implementation="1.3"]){[Id="Page001"]}[Data],
       to_list = List.Buffer(Table.ToList(slip, (x) => List.RemoveNulls(x){0})),
       to_text =
           "оплатил " &
           Text.TrimEnd(to_list{List.PositionOf(to_list, "Сумма перевода") + 1}?, {" ", "₽"}) &
           " руб. (на карту) - " &
           to_list{1}
       ][to_text],
   sber_files = Folder.Files("путь_к_сберовской_папке")[[Name], [Content]],
   trn = Table.TransformColumns(sber_files, {"Content", sber})
in
   trn
пришлите пожалуйста файл пример  
 
pq
Изменено: sotnikov - 07.07.2024 13:40:51
 
Цитата
написал:
temp.zip  (235.79 КБ)
Спасибо, но есть вопросы ДАТА отображается не так как мне нужно, нужно только день и месяц, и по сумме она отображается как текст, а мне нужно чтобы отображалась как "Десятичное число" - в этом случае там не будет лишних пробелов после суммы, тысячи будут без пробелов, и точки перед копейками не будет, вместо нее будет запятая в случае если есть хоть одна копейка, если будут нули, то они не будут отображаться
-----
Вы не много по другому прописываете код, поэтому мне не понятно как исправить, я же делаю исходя из того что нашел в интернете, в том числе видео обучение на ютуб канале от Николая Павлова, но само программирование написание кода я в этом не силен, то что я понял я подкорректировал, но не все - большая просьба помочь подкорректировать. Если возможно прям в этой книге (которую я прикрепил)
Изменено: Александр - 07.07.2024 14:11:35
 
и дополнительный вопрос.
У меня в моем рабочем варианте я создал 2-е вкладки, в первой отображается - то как мы сейчас сделали, а во второй вкладке более подробная информация содержащая:
  1. № п/п
  2. Имя файла
  3. Дата полностью (день.месяц.год)
  4. Время оплаты (которое в чеке)
  5. Сумма оплаты (важно без учета комиссии);
  6. Комиссия
  7. ФИО получателя
  8. Номер карты получателя (если есть, может быть по ном. тел)
  9. Телефон получателя (если есть, может быть по карте)
  10. ФИО отправителя
  11. Карта отправителя
Вот в книге которую Вы прислали, я хочу сделать тоже самое, но не понимаю в Вашем коде как добавлять столбцы и брать информацию из чека и вставлять ее в нужные мне поля, подскажите пожалуйста как это правильно прописать в коде?
 
Цитата
Александр написал:
Спасибо, но есть вопросы ДАТА отображается не так как мне нужно, нужно только день и месяц, и по сумме она отображается как текст, а мне нужно чтобы отображалась как "Десятичное число" - в этом случае там не будет лишних пробелов после суммы, тысячи будут без пробелов, и точки перед копейками не будет, вместо нее будет запятая в случае если есть хоть одна копейка, если будут нули, то они не будут отображаться
pq
 
Цитата
написал:
let    f=(x)=>[a=Table.ToList (Pdf.Tables(x){0}[Data],(x)=>Text.Combine(x)),            b=Date.From(Text.Combine(List.FirstN(Text.Split(a{1}," "),3)," ")),            c=List.Skip(a,(x)=>not Text.StartsWith(x,"Сумма")){1},            d=Text.From(Number.From(Text.Select(c,{"0".."9"}))/100),            e="оплатил "&d&" руб. (на карту) - "&Date.ToText(b,[Format="dd.MM"])][e],    from = Folder.Files("C:\--СВОЙ-ПУТЬ--\files")[[Name],[Content]],    to = Table.TransformColumns(from,{"Content",f})in    to
у меня почему то ошибка, подскажите где не правильно?, если возможно просьба сразу присылайте файл, так надежнее будет, т.к. редактор очень чувствительный, чуть запятую где то не поставил и все  
 
Цитата
написал:
          d=Text.From(Number.From(Text.Select(c,{"0".."9"}))/100),
тоже не получается, прописал и ничего не поменялось((
 
Цитата
Александр написал:
так надежнее будет
вроде вопрос был помочь с решением, а не предоставить его ))
 
Цитата
написал:
вроде вопрос был помочь с решением, а не предоставить его ))
если решение применить не получается, к сожалению это не помощь, пустая трата времени Вашего и моего
----
Я не обладаю знаниями в программировании (если бы были такие знания сюда бы не писал), однако я не первый день с Excel работаю, что то знаю, и пытаюсь применить (зачастую новые знания по наитию ставлю, пробую не раз). Прежде чем сюда написать я попробовал применить Ваше решение по всякому, код я пересмотрел, но в чем ошибка его применения мною я не пойму
 
Александр,
Пробуй применить код запроса для примера из моего предыдущего сообщения.
 
Цитата
написал:
у меня почему то ошибка, подскажите где не правильно?, если возможно просьба сразу присылайте файл, так надежнее будет, т.к. редактор очень чувствительный, чуть запятую где то не поставил и все  

Прикрепленные файлы
Ошибка.jpg  (96.1 КБ)
так я же ответил, что у меня не получатся
 
У себя ошибок не наблюдаю. Скачай архив из МОЕГО предыдущего сообщения, распакуй в отдельную папку, открой файл xlsx, дай необходимые разрешения (если запросит), зайди в редактор запросов, зайди в расширенный редактор, замени ВЕСЬ код запроса на код в из МОЕГО последнего сообщения, откорректируй в коде запроса путь к файлам pdf, закрой с сохранением, Данные > Обновить все.
 
Цитата
Александр написал:
то как мы сейчас сделали
какая прелесть  :D
а после cross - просто герой!
Пришелец-прораб.
 
Цитата
написал:
У себя ошибок не наблюдаю. Скачай архив из МОЕГО предыдущего сообщения, распакуй в отдельную папку, открой файл xlsx, дай необходимые разрешения (если запросит), зайди в редактор запросов, зайди в расширенный редактор, замени ВЕСЬ код запроса на код в из МОЕГО последнего сообщения, откорректируй в коде запроса путь к файлам pdf, закрой с сохранением, Данные > Обновить все.
Ошибка так и осталась
Изменено: Александр - 07.07.2024 19:14:56
 
Цитата
написал:
какая прелесть   а после  cross  - просто герой!
Я не вижу к сожалению ответа на мой вопрос. Я так понял у Вас либо нету желания или времени помочь (или личная неприязнь), поэтому попросил помощи на другом сайте. Если есть возможность помочь помогите, я же написал, что у меня ошибку выдает, на что мне раза 2-а или 3 сказали одно и тоже пробуйте, пробуйте, к чему это не понимаю
 
Цитата
Александр написал:
к чему это не понимаю
все предоставленные здесь решения (или подводки к этим решениям) для того, кто хоть немного интересуется языком М и Power Query в Excel, дают предостаточно информации, чтобы решить ваш вопрос самостоятельно. Это и есть, в моем понимании, "помощь". Вы же буквально кричите о том, что вы чего-то не знаете или не понимаете и просите предоставить вам решение "под ключ", набрасывая новые задания помогающим. Это для раздела Работа. Хотите, чтобы вам решили все за вас по вашему ТЗ - разместите заказ в разделе Работа.
Ну а про "кроссы" - прочитайте про них в Правилах. Это не наказуемо, но...
p.s. задача ваша - "плевая" и не представляет интереса. Ну сами посудите - файлы PDF, поля разъехались. Серьезно? А то, что вы не хотите прилагать усилия, чтобы разобраться в этой простой задаче самостоятельно (с учетом уже оказанной помощи), а только требуете и требуете разобраться в вашем непонимании, порождает лишь нежелание заниматься этой задачей. Все ИМХО, как говорится.
Изменено: AlienSx - 07.07.2024 19:48:16
Пришелец-прораб.
 
отвечу
Цитата
написал:
все предоставленные здесь решения (или подводки к этим решениям) для того, кто хоть немного интересуется языком М и Power Query в Excel, дают предостаточно информации, чтобы решить ваш вопрос самостоятельно
зная язык M и Power Query в Excel. я бы не обратился к Вам на форум, но что в Вашем понимании "Немного" это понятие растяжимое, от того как человек просто увидел окно в power query и закрыл его, до того как человек пишет самостоятельно код и ошибся где то и попросил помощи найти ошибку. В ином случае сайт для человека который обладает знанием программирования M и Power Query, ему не требуется помощь.
Цитата
написал:
Вы же буквально кричите о том, что вы чего-то не знаете или не понимаете и просите предоставить вам решение "под ключ", набрасывая новые задания помогающим. Это для раздела Работа. Хотите, чтобы вам решили все за вас по вашему ТЗ - разместите заказ в разделе Работа.
Теперь что касаемо моего случая и вопроса, я попросил подкорректировать мой вариант (не создавая другой), в своем варианте, я бы смог отредактировать то как мне нужно, а в этом варианте который мне прислали прописан код в ином его исполнении, и как его применить на практике я не понимаю. Заметьте я не просил с нуля мне делать, я уже сделал вариант, но который нуждался просто в доработке, а не создания нового, как Вы говорите под ключ.
Вопросы конечно возникают если что то идет не так, для этого наверно и нужна такая помощь, чтобы подсказать человеку правильное решение, которого он не нашел в открытом доступе в интернете.
Цитата
написал:
Ну а про "кроссы" - прочитайте про них в Правилах. Это не наказуемо, но...
Правила я читал, понимаю, но я ответил почему принял такое решение, мои сообщения об ошибке просто проигнорировали и написали пробуй еще раз, все хорошо. Вот что мне нужно на это ответить может Вы подскажите, а я возьму на заметку. И в правилах написано что кто быстрее даст ответ, якобы если бы я сразу разместил на разных форумах такой вопрос, тогда бы я понял Ваше не допонимание, но ситуация немного другая, после того как я понял что меня не слышат и не слушают, только после этого я написал сообщение на другом форуме, к сожалению уже не надеясь на Вашу помощь в итоге  
 
Цитата
написал:
то, что вы не хотите прилагать усилия, чтобы разобраться в этой простой задаче самостоятельно (с учетом уже оказанной помощи), а только требуете и требуете разобраться в вашем непонимании, порождает лишь нежелание заниматься этой задачей
Т.е. я не прилагаю усилия? серьезно, я создал файл с кодами прописанными, на который потратил несколько дней, вариант рабочий но не для всех чеков, попросил помощи, а тут меня потыкают, что я не хочу разбираться, вот я именно  хочу разобраться и применить рабочий вариант у себя, и посмотрите каждое мое сообщение - я прошу помочь а не требую!, и так как код новый у меня появляются дополнительные вопросы как быть дальше, потому что я не понимаю такой вариант. Для Вас наверное это как семечки такой код написать, для меня это несколько дней ковыряний в интернете и не факт что найду. Вот что нашел и я показал как я это сделал. (причем чтобы к этому варианту прийти я пересмотрел не один десяток видеороликов на ютубе, чтобы по частям выудить и применить на практике некоторые решения). После этого я не понимаю Ваш комментарий что я не хочу разобраться.  
 
Цитата
Александр написал:
отвечу
палец_вверх
Цитата
Александр написал:
я попросил подкорректировать мой вариант (не создавая другой)
не самый хороший подход. Вы там что-то понаделали (честь вам и хвала), но что я, что sotnikov, предлагали вам то, что, как мы видим, является решением вашего вопроса, исходя из наших знаний и опыта. Если вам было нужно решение "на кнопках" в PQ, то об этом надо сразу надо было оговорить (а этим искусством мало кто владеет).
Пришелец-прораб.
 
Цитата
написал:
Если вам было нужно решение "на кнопках" в PQ, то об этом надо сразу надо было оговорить (а этим искусством мало кто владеет).
???
Цитата
написал:
возможно ли подредактировать мой файл excel, чтобы в один список попадали данные из файла pdf чека в excel.
Так я писал, или как то по другому нужно было это написать?
Изменено: Александр - 07.07.2024 20:19:39
 
Цитата
Александр написал:
После этого я не понимаю Ваш комментарий что я не хочу разобраться.  
успокойтеся :) Примите как факт, что задача ваша не стOит никакого ...  яйца :) Если будет настроение, то мы эту фигню здесь порешаем на ать-два :) Просто седня ВСК и горючее на исходе :)
Пришелец-прораб.
 
Цитата
Александр написал:
Так я писал, или как то по другому нужно было это написать?
вот это сразу нет - этого делать не будем. Использовать ваши "наработки" не будем. Согласны?
Изменено: AlienSx - 07.07.2024 20:22:51
Пришелец-прораб.
 
Цитата
написал:
не самый хороший подход. Вы там что-то понаделали (честь вам и хвала), но что я, что  sotnikov , предлагали вам то, что, как мы видим, является решением вашего вопроса, исходя из наших знаний и опыта
понимаю что возможно в Вашем понимании там сделан бред, но повторюсь я какое смог найти решение такое и сделал, к сожалению не обладаю знаниями программирования, но результата я определенного достиг и без такого знания, нужна лишь корректировка кода который прописан в книге Excel которую я изначально отправлял
 
Цитата
написал:
вот это сразу нет - этого делать не будем. Использовать ваши "наработки" не будем. Согласны?
зачем спрашивать если Вы это делать не будете, ну да ладно.
Тогда помогите разобраться с Вашим кодом, остановились мы на том что в коде вероятнее всего ошибка, возможно что то я делаю не так
 
Цитата
написал:
успокойтеся  Примите как факт, что задача ваша не стOит никакого ...  яйца  Если будет настроение, то мы эту фигню здесь порешаем на ать-два  Просто седня ВСК и горючее на исходе
Ну теперь понятно, просто не сегодня, времени нету. Я не против, так бы сразу сказали, и я бы подождал день - два или неделю (сколько нужно) чтобы вернуться к моему вопросу.
Страницы: 1 2 След.
Наверх