As a third party with only the public blockchain data, there is likely no way to accurately fit a random Bitcoin transaction into the double-entry accounting method. This is because a single Bitcoin transaction could represent the economic activity and payments of many different people, or of many different transactions. To say this differently: transaction inputs/outputs do not necessarily map 1:1 onto users/transactions. There are ways to create Bitcoin transactions such that any one transaction can represent a larger amount of economic activity (more people and/or payments involved), especially in consideration of higher level protocols such as the Lightning Network, federated sidechains, etc.
As an example, a coinjoin transaction is intentionally designed to make it nearly impossible to determine who the owner of the newly created UTXOs is. Even those that are party to the transaction itself would only have knowledge of their own involvement, the nature of the other inputs/outputs would be unknown to them. Here is an example of a coinjoin transaction.
Another example is a lightning network channel: in this case a couple of on-chain Bitcoin transactions could represent a potentially unlimited set of payments, but all of those payments will be happening off-chain, and so they cannot possibly be known just by looking at the Bitcoin blockchain. Here is an example of a lightning network transaction, there is no knowing how many payments were sent over this payment channel (unless you were party to the channel, of course). Here is a look at that channel, but from a lightning network explorer.
SO how is that possible that we take bitcoin transaction from blockchain directly
You cannot, unless you have additional information about the transactions you are attempting to catalogue. Generally, this sort of info is only known to those that are party to the transaction, so you should be able to accurately account for your portion of involvement in any transactions you are involved in, but to do so for every transaction in the blockchain is ultimately impossible. Too much potential nuance and detail is not explicitly stored in the blockchain record (and for good reason, privacy and fungibility is important).
Also, we might not be able to identify from which address the transaction fees original from.
There is no concept of 'which address fees originate from' inherent to the blockchain record, for more info see my answer here.