Kaynak: https://oguzerol.com/pdf-den-excele-aktarma/
[
Görseli büyüt](https://oguzerol.com/gorseller/senaryo/pdf-den-excele-aktarma-senaryo-tr.webp)
# PDF'den Excel'e Aktarma: Fatura ve Banka Ekstresi
[Oğuz Erol](https://oguzerol.com/hakkimda/) | 15 dk okuma | Yayın: 29 Temmuz 2026 | Güncelleme: 16 Ekim 2026
## Kısa özet
Fatura ve banka ekstresi PDF'lerini Excel'e Power Query ile alın; sayfa bölünmesi, ayırıcı ve tarih hatalarını kontrol sütunu ve bakiye kontrolüyle yakalayın.
PDF’teki faturayı ya da banka ekstresini Excel’e almanın yolu PDF’in türüne bağlı. Yazıyı fareyle seçebiliyorsanız belge metin tabanlıdır ve Excel’in kendi aracı çoğu zaman yeter: **Veri > Veri Al > Dosyadan > PDF’den** (Data > Get Data > From File > From PDF). Bu menü Microsoft’un sürüm tablosuna göre yalnız Microsoft 365 aboneliğindeki Excel’de var, Office 2016 ve 2019’da yok. Yazıyı seçemiyorsanız belge taranmış bir görüntüdür; önce OCR (optik karakter tanıma) gerekir ve okunan her rakam bir tahmindir. İki durumda da aktarım işin yarısıdır. Öbür yarısı kontrol: kalemlerin toplamı faturadaki matrahı, hareketlerin toplamı ekstredeki kapanış bakiyesini tutuyor mu, aynı belge iki kez gelmiş mi.
## PDF’iniz metin tabanlı mı, taranmış mı?
Metin tabanlı PDF ile taranmış PDF’i ayırmanın en hızlı yolu, belgede Ctrl+F ile bir tutar aramaktır: bulunuyorsa belgede metin vardır, bulunmuyorsa elinizde sayfanın resmi vardır. Bu ayrım önemli, çünkü hatanın türünü değiştirir.
| özellik | metin tabanlı PDF | taranmış PDF |
| --- | --- | --- |
| Nereden gelir | Programdan kaydedilmiş fatura, internet bankacılığı ekstresi | Basılıp taranmış, fotoğrafı çekilmiş belge |
| Ctrl+F | Tutar bulunur | Hiçbir şey bulunmaz |
| Excel’in PDF aracı | Tabloları listeler | Okuyacak metin bulamaz |
| Tipik hata | Rakam doğru, yeri yanlış: kayan sütun, fazladan satır | Yer doğru, rakam yanlış: 6 yerine 8 |
| Kontrol | Toplamlar ve satır sayısı | Her belgede toplam + görüntüyle karşılaştırma |
## PDF’ten okumadan önce: aynı verinin Excel ya da XML hâli var mı?
PDF’ten okumak son çaredir; önce aynı verinin makinenin doğrudan okuyabildiği bir hâli var mı bakın. Banka ekstresinde internet bankacılığının Excel ya da CSV dışa aktarması varsa onu kullanın.
Türkiye’de faturada bir seçenek daha var. GİB’in [e-Fatura sayfasına](https://ebelge.gib.gov.tr/efaturahakkinda.html) göre e-Fatura uygulamasında XML tabanlı UBL-TR standardı kullanılıyor (16 Ekim 2026’da okudum). Siz ve tedarikçiniz e-Fatura’ya kayıtlıysanız aynı faturanın XML dosyasını e-fatura programınızdan ya da entegratörünüzden alın: tutar, KDV ve fatura numarası orada etiketli alanlarda durur, OCR ya da sütun tahmini gerekmez. e-Arşiv faturada GİB’in [e-Arşiv sayfası](https://ebelge.gib.gov.tr/earsivhakkinda.html) belgenin alıcının talebine göre kâğıt ya da elektronik ortamda iletildiğini yazıyor; elektronik gelen e-Arşiv faturanın dosya biçimini genel bir kural olarak doğrulayamadım, tedarikçinize sorun.
XML’i Excel’e almak için **Veri > Veri Al > Dosyadan > XML’den** (From XML) seçilir; Gezgin dosyadaki öğe gruplarını tablo hâlinde gösterir. Microsoft’un sürüm tablosunda XML kaynağı Office 2016, 2019, Microsoft 365 ve Mac sütunlarının hepsinde işaretli; PDF’den menüsü olmayan Excel’de de bu yol açık. Hangi etiketin matrah, hangisinin KDV ya da ödenecek tutar olduğu GİB’in UBL-TR kılavuzlarında tanımlı ([e-Fatura mevzuat sayfasında](https://ebelge.gib.gov.tr/efaturamevzuat.html) “UBL-TR1.2.1 Kılavuzları” bağlantısı). Kılavuzun içini bu sayfa için açmadım, etiket adlarını bu yüzden yazmıyorum.
## Excel’in kendi yolu: Power Query ile PDF’den almak
Excel’de PDF aktarımı Power Query’nin PDF bağlayıcısıyla yapılır. Microsoft’un [Excel sürümlerine göre Power Query veri kaynakları](https://support.microsoft.com/en-us/office/power-query-data-sources-in-excel-versions-e9332067-8e49-46fc-97ff-f2e1bfa0cb16) tablosunda PDF satırı yalnız Microsoft 365 sütunlarında işaretli; Office 2016, 2019 ve Mac’te yok, Excel 2021 ve 2024’ün ayrı sütunu yok (16 Ekim 2026’da okudum). Bağlayıcı .NET Framework 4.5 ya da üstünü istiyor.
Adımlar (Türkçe arayüz, parantez içinde İngilizce):
1. **Veri > Veri Al > Dosyadan > PDF’den** (Data > Get Data > From File > From PDF). Dosyayı seçip **Aç** (Open) deyin.
2. **Gezgin** (Navigator) PDF’te bulduğu tabloları ve sayfaları listeler. **Yükle** (Load) yerine **Verileri Dönüştür** (Transform Data) seçin.
3. Sütun adları Column1, Column2 diye geldiyse **İlk satırı üst bilgi olarak kullan** (Use First Row as Headers).
4. Tekrar eden başlık ve nakli yekün satırlarını süzün (aşağıdaki bölüm).
5. Tutar sütununa sağ tıklayın: **Türü değiştir > Yerel ayarı kullan** (Change Type > Using Locale). Ondalıklı sayı türünü ve Türkçe (Türkiye) yerel ayarını seçin. Tarih sütununa aynısını tarih türüyle yapın.
6. Açıklaması birden çok satıra bölünmüş kalemlerde boş hücreleri **Doldur > Aşağıya Doğru** (Fill > Down) ile doldurun.
7. **Giriş** sekmesinde **Kapat ve Yükle** (Close & Load) ile sonucu sayfaya alın.
Her ay birden çok PDF geliyorsa tek tek açmak yerine **Veri > Veri Al > Dosyadan > Klasörden** (From Folder) ile klasörü bağlayıp **Dosyaları birleştir** (Combine Files) seçin. Birleşik tabloda **Source.Name** sütunu her satırın hangi dosyadan geldiğini gösterir; aşağıdaki kontrol sütunları bu sütuna dayanır.
(Adların çoğu Microsoft’un Türkçe yardım sayfalarında geçiyor. Veri Al > Dosyadan > PDF’den / XML’den / Klasörden dizisini ve Metin Filtreleri > İçermez adını orada birebir bulamadım, Türkçe arayüzde de denemedim; adlar sürüme göre değişebilir.)
Bağlayıcının arkasındaki işlev `Pdf.Tables`. [Microsoft Learn’ün PDF bağlayıcısı sayfasına](https://learn.microsoft.com/tr-tr/power-query/connectors/pdf) göre seçenekleri sayfa aralığı (`StartPage`, `EndPage`), ardışık sayfalardaki benzer tabloları birleştirme (`MultiPageTables`, varsayılan açık) ve çizgileri kesin hücre sınırı sayma (`EnforceBorderLines`, varsayılan kapalı) (16 Ekim 2026’da okudum). Microsoft büyük PDF’te küçük sayfa aralığının, tek dev tabloda `MultiPageTables`’ı kapatmanın yararlı olabileceğini söylüyor. Formül çubuğundaki kaynak adımı şöyle görünür:
```
= Pdf.Tables(File.Contents("C:\Faturalar\B-2.pdf"), [StartPage=1, EndPage=3, MultiPageTables=false])
```
Satırı Microsoft’un başvurusundan kurdum, Excel’de çalıştırmadım.
## Çok sayfalı faturada tekrar eden başlık ve nakli yekün
Çok sayfalı bir faturada asıl tehlike satır kaybı değil, kalem gibi görünen fazladan satırdır. `MultiPageTables` açıkken Power Query sayfaları tek tabloda birleştirir, ama her sayfanın başındaki sütun başlığı ve sayfa sonundaki “nakli yekün” (sonraki sayfaya devreden ara toplam) satırı da tabloya girebilir. Başlık satırı metindir, sayıya çevirirken hata verir. Nakli yekün ise bir sayıdır ve toplamı sessizce şişirir.
Aşağıdaki kurgusal örnek ayın B-2 faturası bunu gösteriyor: 3 sayfa, 22 kalem. Betikte kurduğum birleşik tabloda 26 satır var: 22 kalem, 2 tekrar eden başlık, 2 nakli yekün (51.340,00 TL ve 90.250,00 TL). Tutar sütununun toplamı 257.080,00 TL, faturadaki matrah 115.490,00 TL. Aradaki 141.590,00 TL, tam olarak iki nakli yekünün toplamı.
Süzme yolu: açıklama sütununun başlığındaki ok > **Metin Filtreleri > İçermez** (Text Filters > Does Not Contain). Açılan **Satırları filtrele** penceresinin gelişmiş modunda birden çok koşul yazılabilir: “nakli yekün”, “devreden”, “sayfa toplamı” ve sütun başlığının kendisi. Bu ifadeler tedarikçiden tedarikçiye değişir, listeyi tedarikçi başına tutun. Kuralın doğru çalıştığını tek bir şey kanıtlar: süzmeden sonra kalemlerin toplamı matrahla aynı olmalı.
## Binlik ayırıcı, ondalık ayırıcı ve tarih biçimi
Ayırıcı ve tarih hataları aktarımın en sessiz hatalarıdır. Türkçe belgede nokta binlik, virgül ondalık ayırıcıdır. Ondalık kısmı yazılmamış “1.250” gibi bir tutar, noktayı ondalık sayan bir yerel ayarla (ör. İngilizce-ABD) çevrilirse bin iki yüz elli değil, bir virgül yirmi beş okunur; hata mesajı çıkmaz, sonuç bin kat küçük olur. “1.250,00” gibi kuruşlu yazımda ne olduğunu denemedim. Her durumda tutar sütununu Yerel ayarı kullan ile Türkçe (Türkiye) seçerek çevirin.
Tarihte aynı mekanizma işler. Microsoft, Power Query’nin [veri türleri sayfasında](https://learn.microsoft.com/tr-tr/power-query/data-types) gün/ay/yıl yazılmış bir tarihin ay-önce okuyan yerel ayarda “22. ay” olmadığı için hata verdiğini anlatıyor (16 Ekim 2026’da okudum). Aynı yanlış okumada günü 12’den küçük olan tarih hata vermez, sessizce başka bir tarihe oturur. Örnek aydaki 13 faturanın 6’sında gün 12’den küçük; yanlış ayarda bu altısı sessizce kayar, 7’si hata verir. Hata veren yediyi düzeltip altıyı fark etmemek kolaydır; düzeltmeden sonra bütün tarihlerin dönem içinde kaldığına bakın.
## Banka ekstresini Power Query ile almak ve bakiye kontrolü
Banka ekstresi aynı PDF’den yoluyla alınır; farkı, kontrolün matrah yerine bakiyeyle yapılmasıdır. Tarih, açıklama, borç, alacak ve bakiye sütunlarında şu uyarlamalar gerekir:
- **Çok satırlı açıklama:** İkinci satırda tarih boş kalır. [Microsoft’un PDF bağlayıcısı sayfası](https://learn.microsoft.com/tr-tr/power-query/connectors/pdf) bunun için `Table.FillDown` ve `Table.Group` M işlevlerini örnek veriyor; arayüzdeki karşılıkları **Doldur > Aşağıya Doğru** ve **Grupla** (Group By).
- **Ters sıra:** En yeni hareket üstteyse önce tarih sütununu **Artan sırala** ile eskiden yeniye dizin; satır kontrolü bu sırayla çalışır.
- **Devreden bakiye:** Sayfa başlarındaki “devreden bakiye” satırları hareket değildir, faturadaki nakli yekün gibi süzülür.
- **Borç ve alacak:** Ayrı sütunlarsa hareket = alacak − borç olarak tek sütun ekleyin. Tek sütunda işaretle geliyorsa işaretin kaybolmadığına bakın.
- **Tarih ve tutar:** İkisi de Yerel ayarı kullan ile Türkçe (Türkiye) seçilerek çevrilir. Bakiye “1.234,56 B” gibi harfle geliyorsa önce Sütunu böl > Sınırlayıcıya Göre ile boşluktan bölün: harf (B borç, A alacak) ayrı sütuna, tutar sayıya.
Sonra iki kontrol yapılır. Birincisi toplam: açılış bakiyesi + bütün hareketler = kapanış bakiyesi. İkincisi satır satır: önceki satırın bakiyesi + bu satırın hareketi = bu satırın bakiyesi. İkinci kontrol, toplamın neden tutmadığını gösterir.
Kurgusal bir örnek: açılış 40.000,00 TL, 6 hareket, kapanış 44.737,50 TL. Aktarımda ikinci sayfanın ilk satırı (26.750,00 TL gelen EFT) kayboldu. Açılış + aktarılan 5 hareket = 17.987,50 TL, kapanış 44.737,50 TL; fark tam 26.750,00 TL. Satır kontrolü sonraki satırda kırıldı: önceki bakiye 39.400,00 TL’den 12,50 TL ücret düşülünce 39.387,50 TL beklenirken satırdaki bakiye 66.137,50 TL. Kayıp satır bu iki satırın arasındadır.
Excel’de ekstre sayfasında A tarih, B açıklama, C borç, D alacak, E bakiye sütunuysa ve 2. satırda açılış bakiyesi duruyorsa, F3 hücresine `=MUTLAK(E2+D3-C3-E3)<=0,01` (İngilizce Excel’de `=ABS(E2+D3-C3-E3)<=0.01`) yazıp aşağı çekin. YANLIŞ çıkan ilk satır kaybın yeridir. Ekstreyi hesap hareketleriyle ya da POS kayıtlarıyla eşleştirmek ayrı bir iş; onu [banka ve POS mutabakatı uygulaması](https://oguzerol.com/banka-hareketi-mutabakat-uygulamasi/) sayfasında anlattım.
## Örnek bir ay: üç tedarikçi, 13 fatura
Aşağıdaki firma, tedarikçiler ve rakamlar kurgusaldır; yöntemi göstermek için bir betikle ürettim ve her rakamı betikte doğruladım. Orta ölçekli bir metal parça üreticisine ay içinde üç tedarikçiden PDF fatura geliyor:
| tedarikçi | ne satıyor | PDF türü | fatura | genel toplam |
| --- | --- | --- | --- | --- |
| A | sac | metin tabanlı, e-Fatura | 4 | 362.520,00 TL |
| B | kesici takım ve sarf | metin tabanlı, biri 3 sayfa | 4 | 200.229,00 TL |
| C | nakliye | taranmış | 5 | 96.660,00 TL |
| toplam | | | 13 | 659.409,00 TL |
Kalemlerin çoğunda KDV oranı %20, B-3 faturasında bir kalem %10 alındı. Ayın toplamı: matrah 549.870,00 TL, KDV 109.539,00 TL, genel toplam 659.409,00 TL. Satınalma 14 dosya yükledi, çünkü A-4 faturası e-postayla iki kez geldi.
Her faturaya dört kural uygulandı:
1. **Satır toplamı = matrah** (1 kuruş tolerans).
2. **KDV = kalem tutarı × kalemin oranı, oran başına toplanır** (5 kuruş tolerans, başlangıç önerim).
3. **Matrah + KDV = genel toplam** (1 kuruş tolerans).
4. **Mükerrer belge:** aynı vergi numarası ve aynı fatura numarası ikinci kez gelirse reddedilir.
Sonuç: 14 dosyanın 1’i (A-4’ün ikinci kopyası) mükerrer olarak reddedildi, 13 faturanın 10’u dört kuraldan da geçti, 3’ü istisna kuyruğuna düştü:
- **B-2:** satır toplamı matrahı tutmadı; sebep yukarıdaki iki nakli yekün.
- **C-2 (taranmış):** OCR, KDV’yi 1.640,00 TL yerine 1.840,00 TL okudu. 8.200,00 TL matrahın %20’si 1.640,00 TL; matrah ile okunan KDV’nin toplamı 10.040,00 TL, belgedeki genel toplam 9.840,00 TL. İki kural birden yakaladı.
- **C-3 (taranmış):** OCR ilk satırdaki 18.450,00 TL’yi 16.450,00 TL okudu. Kalemlerin toplamı 17.650,00 TL, matrah 19.650,00 TL; 2.000,00 TL’lik fark satır kuralına, okunan kalemlerden beklenen KDV de KDV kuralına takıldı.
İki oranlı B-3 kurallardan geçti: matrah 10.230,00 TL, KDV 1.611,00 TL (1.176,00 + 435,00), genel toplam 11.841,00 TL. KDV’yi matrahın %20’si diye kontrol eden tek oranlı bir formül, bu doğru faturayı 435,00 TL farkla yanlışlıkla işaretlerdi.
Taranmış 5 faturanın 2’si kuyruğa düştü, metin tabanlı 8 faturada okuma hatası çıkmadı. Bu oran kurgunun sonucudur, bir OCR aracının ölçülmüş doğruluğu değildir. Hataların hepsini göz gezdirmek değil, kurallar buldu. Kuyruktan bir karar da çıktı: A e-Fatura’ya kayıtlı olduğu için sonraki aydan itibaren onun faturaları XML’den okunur; C’den taranmış kopya yerine fatura programından kaydedilmiş PDF istenir.
## Excel’de kontrol sütunları nasıl kurulur?
Kontrol sütunları iki bağımsız kaynağı karşılaştırır: makinenin okuduğu kalemler ve sizin faturanın altından aldığınız üç toplam.
**Kalemler** sayfası Power Query’den gelir:
- **Dosya adı:** PDF’i e-postadan kaydeden kişi (ör. satınalma) dosyayı kaydederken elle `VergiNo_FaturaNo.pdf` diye adlandırır (ör. `1000000001_A-4.pdf`; fatura numarasında nokta ve alt çizgi olmaz).
- **Bölme:** Klasörden birleştirdikten sonra Source.Name sütununu **Sütunu böl > Sınırlayıcıya Göre** ile ”.” karakterinden bölün; çıkan “pdf” sütununu silin. Kalan sütunu ”_” karakterinden bölün: A vergi numarası, B fatura numarası.
- **Diğer sütunlar:** C açıklama, D tutar, E KDV oranı ondalık sayı olarak (0,2; hücreyi yüzde biçimine almak görünümü %20 yapar, değeri değiştirmez; faturada kalem başına oran yoksa elle girilir), F `=EĞERHATA(D2*E2;0)`, yani kalemin KDV payı. Tekrar eden başlık satırında F hata vermez, 0 döner.
**Faturalar** sayfasına her fatura için bir satır girilir: A vergi numarası, B fatura numarası, C matrah, D KDV, E genel toplam. Üç tutar fatura altından elle girilir (13 faturada 39 rakam) ya da XML’den alınır; OCR çıktısından alınırsa C-2’deki gibi yanlış okunabilir, kontrol sütunları bunu yakalar. Sonra Faturalar sayfasının 2. satırına yazıp aşağı çekin (her blokta ilk satır Türkçe, ikinci satır İngilizce Excel):
F, satır toplamı = matrah:
```
=MUTLAK(ÇOKETOPLA(Kalemler!D:D;Kalemler!A:A;A2;Kalemler!B:B;B2)-C2)<=0,01
=ABS(SUMIFS(Kalemler!D:D,Kalemler!A:A,A2,Kalemler!B:B,B2)-C2)<=0.01
```
G, KDV oran başına:
```
=MUTLAK(ÇOKETOPLA(Kalemler!F:F;Kalemler!A:A;A2;Kalemler!B:B;B2)-D2)<=0,05
=ABS(SUMIFS(Kalemler!F:F,Kalemler!A:A,A2,Kalemler!B:B,B2)-D2)<=0.05
```
H, matrah + KDV = genel toplam:
```
=MUTLAK(C2+D2-E2)<=0,01
=ABS(C2+D2-E2)<=0.01
```
I, mükerrer belge:
```
=ÇOKEĞERSAY(A:A;A2;B:B;B2)>1
=COUNTIFS(A:A,A2,B:B,B2)>1
```
Formülleri örnek aya betikte uyguladım. 14 satırlık Faturalar sayfasında A-4, B-2, C-2 ve C-3 işaretlendi; iki oranlı B-3 geçti. A-4 iki kez kaydedilip Faturalar’a iki kez girildiğinde I sütunu DOĞRU çıktı, ama F ve G de YANLIŞ oldu, çünkü kalemleri de iki kez yüklendi ve ÇOKETOPLA iki katını buldu. Bir satır işaretlenince önce I sütununa bakın.
## Taranmış PDF: OCR ve yapay zekâ nerede yardım eder?
Taranmış PDF iki yoldan okunur; ikisinin de çıktısı kayıt değil, adaydır. Birinci yol: OCR yapan bir PDF aracıyla (masaüstü PDF programı, tarayıcının kendi yazılımı ya da muhasebe programınızın tarama modülü; hangisi sizde varsa) belgeye metin katmanı ekleyin, sonra Power Query ile yukarıdaki gibi alın. İkinci yol: OCR ve yapay zekâ destekli ayrıştırmayla fatura numarası, tarih, matrah, KDV ve kalemleri doğrudan alan olarak çıkarın. Bu yol, düzeni tedarikçiye göre değişen ya da tablo çizgisi olmayan belgede kullanılabilir.
Kontrol isteyen yer rakamın kendisidir: 6 ile 8, 1 ile 7, virgülün yeri. Yapay zekâ okuyamadığı bir alana boş bırakmak yerine makul görünen bir değer yazabilir; modelin güven bilgisi tek başına onay sebebi değildir. Kuralım şu: tutar, KDV ve genel toplam yukarıdaki dört kuralla doğrulanır. Kurala uyan aday kayda geçer, uymayan kuyruğa düşer ve bir kişi belgenin görüntüsüyle karşılaştırır. Yapay zekâ onay vermez, toleransı değiştirmez; modele ne gittiği ve ne döndüğü iz kaydına yazılır. Hiçbir araç için “yüzde şu kadar doğru” demiyorum; doğruluk baskı kalitesine, taramanın çözünürlüğüne ve düzene bağlı. Bu yüzden büyük bir işe girmeden önce kendi PDF’lerinizden birkaçıyla küçük bir deneme yapmanızı öneririm.
## Çevrimiçi dönüştürücü: hangi belgeyi yüklersiniz?
Karar belgenin içeriğine göre verilir. Kamuya açık bir belgeyi (yayımlanmış bir istatistik tablosu, herkese açık bir katalog) çevrimiçi dönüştürücüye yüklemekte sorun görmem. Kişisel ya da ticari bilgi taşıyan belgeyi (banka ekstresi, tedarikçi faturası, fiyat teklifi) yüklemem: dosya başkasının sunucusuna gider ve ne kadar saklandığı aracın kendi beyanına kalır. Bu belgeler için Excel’in kendi aracı, XML ya da kendi sunucunuzda çalışan bir araç doğru yoldur.
Banka ekstresinde ödeme yapan kişilerin adı, şahıs firmasından gelen faturada satıcının adı ve kimlik numarası kişisel veridir. Bunları sunucusu yurt dışında olan bir servise yüklemek, 6698 sayılı KVKK’nın yurt dışına aktarım maddesine (md. 9) girer. Bu madde [7499 sayılı Kanun](https://www.resmigazete.gov.tr/eskiler/2024/03/20240312-1.htm) (Resmî Gazete, 12.03.2024, sayı 32487) ile 1 Haziran 2024’ten itibaren yeniden düzenlendi; md. 9’un güncel metnini 15 Ekim 2026’da mevzuat.gov.tr’den okudum. Hukuki görüş vermiyorum. Tasarımda iki yol öneririm: kişisel alanları maskeleyip göndermek ya da o adımı kendi sunucunuzdaki bir araçla yapmak. Seçimi hukuk danışmanınızla yaparsınız.
## Bu iş her ay birden çok kişiyle tekrarlanıyorsa web uygulaması nerede başlar?
Excel’deki kontrol sütunları, tek kişinin yaptığı ve ayda birkaç faturalık bir iş için yeter. Aynı iş her ay tekrarlanıyor, satınalma yüklüyor, muhasebe kontrol ediyor, finans onaylıyorsa sorun formül değil, sıra ve yetki olur. Paylaşılan Excel’in değişiklik geçmişi kimin hangi hücreyi değiştirdiğini gösterebilir, ama onayı bir role ve gerekçeye bağlamaz; rol ve yetki tabanlı bir web uygulaması burada anlamlı olur. Akış beş adımdır:
1. **Yükleme:** Satınalma PDF’i ya da XML’i yükler; birebir aynı dosya parmak iziyle baştan reddedilir.
2. **Çıkarma:** Metin tabanlı PDF tablo olarak, XML etiketlerinden, taranmış belge OCR ve yapay zekâyla okunur. Her alan aday olarak, okunduğu sayfa ve satırla kaydedilir.
3. **Kurallı kontrol:** Dört kural ve tarihin dönem içinde olması; tedarikçiye özel süzme listeleri (nakli yekün gibi) bu adımda çalışır.
4. **Onay kuyruğu:** Kurallardan geçen fatura muhasebenin onayına, geçemeyen sebebiyle istisna kuyruğuna düşer. Genel toplamı 100.000 TL ve üstü olan fatura ikinci onay için finans müdürüne gider; örnek ayda A-4 (129.840,00 TL) ve B-2 (138.588,00 TL). Eşik başlangıç önerimdir.
5. **Kayıt:** Onaylanan fatura kesinleşir, Excel ya da CSV olarak alınır. Muhasebe programına doğrudan aktarım istenirse programın desteklediği yol önce birlikte doğrulanır.
Tanımlanan iş kuralı veri girilirken uygulanır. Ekranlar ve bildirim kanalı ihtiyaca göre kurulabilir, kapsam ilk adımda yazılı belirlenir. Faturanın e-postadan kayda kadar sürekli işlenmesini [fatura işleme otomasyonu](https://oguzerol.com/fatura-isleme-otomasyonu/) sayfasında ayrıca anlattım.
### Kim ne yapar?
| işlem | satınalma | muhasebe | finans müdürü | denetçi |
| --- | --- | --- | --- | --- |
| Yükler | ✓ | ✓ | — | — |
| Kuyruktaki adayı düzeltir | — | ✓ | — | — |
| Onaylar | — | ✓ eşik altı | ✓ eşik üstü | — |
| Kuralı, toleransı, eşiği değiştirir | — | — | ✓ | — |
| Gerekçeyle geri alır | — | ✓ dönem açıkken | ✓ | — |
| Görür, dışa aktarır | — | — | — | ✓ |
Eşik üstü faturada finans müdürünün onayı muhasebe onayından sonra gelen ikinci onaydır. Satınalma yalnız kendi yüklediği faturaları görür. Önerdiğim kural: kimse kendi düzelttiği satırı onaylamaz. İki kişilik bir ekipte bu, düzeltenin değil ötekinin onaylaması demektir; tek kişi kalırsa kural bilerek kapatılır ve bu karar da iz kaydına geçer.
Her düzeltme silinmeyen bir satır bırakır: kim, ne zaman, hangi alan, aday ve düzeltilmiş değer, gerekçe. C-3 için kayıt “ilk satır 16.450,00 → 18.450,00, taranmış görüntüyle karşılaştırıldı” der. Orijinal PDF ya da XML kayda bağlı saklanır. Vergi Usul Kanunu md. 253 beş yıl, Türk Ticaret Kanunu md. 82/5 on yıl saklama öngörüyor (16 Ekim 2026’da mevzuat.gov.tr’deki güncel metinden doğrulandı); şirket için saklamayı on yıla göre kurarım.
## Excel yetiyorsa ayrı uygulamaya gerek yok
Ayda birkaç fatura alıyorsanız, aktarımı tek kişi yapıyorsa ve faturalarınız metin tabanlıysa ayrı bir uygulamaya büyük ihtimalle ihtiyacınız yok. Power Query sorgusunu bir kez kurun, her ay yenileyin (Refresh All) ve kontrol sütunlarına bakın. Faturalarınız e-Fatura ise muhasebe programınızın onları doğrudan içeri alıp alamadığına da bakın. Ayrı uygulamayı birden çok kişi aynı faturalara dokunuyorsa, taranmış belge payı yüksekse ya da onay ve geri almanın kimde olduğu yazılı izlenmek zorundaysa değerlendiririm.
## İlk sürümü nasıl kurarım, veri ve kod kimde kalır?
İlk sürüm metin tabanlı PDF gönderen tek tedarikçiyle başlar. Otomasyon projelerinde en sık gördüğüm hata, ilk otomasyonu en karmaşık süreçten seçmek; bu örnekte o, ilk günden taranmış nakliye faturalarıyla başlamak olurdu.
1. **Elle kontrol:** O tedarikçinin bir aylık faturalarını, kişisel bilgilerden arındırılmış hâlde, muhasebe sorumlunuzla dört kuralla elle kontrol ederiz. Uygulamanın bulması gereken farkları önceden bilmek tek güvenilir testtir.
2. **İlk sürüm ve karşılaştırma:** Bu tedarikçi için yükleme, çıkarma, kurallar, kuyruk, roller ve iz kaydı kurulur; aynı ay uygulamada yeniden yapılır ve elle bulunan her fark aynı kalemle çıkmalıdır.
3. **Genişleme:** Diğer tedarikçiler, XML ve taranmış belge, ilk tedarikçi bir ay sorunsuz çalıştıktan sonra eklenir.
Uygulama bir sunucuda (VPS) çalışır; sunucu sizin adınıza açılabilir. Veri sizindir, tamamını istediğiniz zaman Excel ya da CSV olarak alabilirsiniz. Küçük ve orta ölçekli ekipte kullanıcı başına lisans yok; maliyet sunucu ve bakımdan oluşur. Kaynak kod sizin erişiminizdeki bir depoda durur; yanında çalıştırma talimatı, bağımlılık listesi ve bilinen sınırlar teslim edilir. Teslim düzeninin ayrıntısı [ekibinize özel web uygulamaları](https://oguzerol.com/ekibiniz-icin-ozel-web-uygulamalari/) sayfasında.
Bir aylık örnek PDF’inizle başlamak isterseniz [iletişim sayfasından](https://oguzerol.com/iletisim/) yazın; önce hangi tedarikçinin belgesiyle başlayacağımızı birlikte seçeriz.
## Sıkça Sorulan Sorular
### Excel’de “PDF’den” seçeneği görünmüyor, ne yapmalıyım?
Önce sürümünüze bakın. Microsoft’un tablosunda PDF kaynağı Microsoft 365 aboneliğindeki Windows Excel’de işaretli; Office 2016 ve 2019’da yok, Mac tablosunda da yok (16 Ekim 2026’da okudum). Bağlayıcı .NET Framework 4.5 ya da üstünü de istiyor. Seçenek sizde yoksa aynı verinin Excel, CSV ya da XML hâlini bankanızdan ya da tedarikçinizden isteyin; XML’den yolu o sürümlerde de var.
### Taranmış bir PDF’i Power Query okuyabilir mi?
Power Query’nin PDF bağlayıcısı belgede bulduğu tabloları döndürür; taranmış sayfada metin olmadığı için bulacağı tablo da yoktur. Önce OCR ile metin katmanı ekleyin, sonra deneyin. Bu durumda toplam kontrolünü her belgede yapın; örnek aydaki iki okuma hatası da taranmış faturalardan çıktı.
### Yüzlerce sayfalık bir banka ekstresini tek seferde alabilir miyim?
Alabilirsiniz, ama tek parça çekmek yavaşlayabilir ve hatanın yerini bulmayı zorlaştırır. `StartPage` ve `EndPage` ile sayfa aralığı vererek parça parça çekin; başlangıç önerim elli sayfalık gruplar, hata veren grubu daha da bölersiniz. Her grubun ilk bakiyesi bir önceki grubun son bakiyesine eşit olmalı. Satır satır bakiye kontrolü, kaybolan ya da iki kez gelen satırın hangi sayfa geçişinde olduğunu gösterir.
[Başa dön ↑](https://oguzerol.com/pdf-den-excele-aktarma/#icerik)
## Bunları da okumak ister misiniz?
[Fatura İşleme Otomasyonu | Faturadan KaydaGelen faturalar elle yazılmadan muhasebe listenize işlensin. Fotoğraf veya PDF'ten okuma, kontrol ve Excel/muhasebe aktarımı. Kontrol adımı dahil.](https://oguzerol.com/fatura-isleme-otomasyonu/)[Taranmış Belgeleri Dijitalleştirme | Arşivden Excel’eKlasörlerdeki taranmış evrak aranabilir arşive dönüşsün. OCR ile okutma, sınıflandırma ve Excel'e dökme; örnek partiyle başlarız. Doğruluk kontrolü dahil.](https://oguzerol.com/pdf-den-excele-aktarma/)[Excel'den Uygulama Yapmak: Yapay Zekâyla Yedi Adımlık RehberExcel dosyanızı çok kullanıcılı web uygulamasına çevirmenin yedi adımı: dosyayı okuma, tablo, rol, kural, göç ve kesme. Yapay zekâ nerede durur, görün.](https://oguzerol.com/excel-i-web-uygulamasina-cevirme/)
[Tüm yazılara göz atın →](https://oguzerol.com/yazilarim/)